【发布时间】:2021-10-26 23:04:42
【问题描述】:
我正在使用 Swift 进行编程,并且有一个如下所示的字典,可以将公司的员工映射到他们的部门:
var acmeInc: [String: [String]] = [
"marketing" : ["john", "amanda", "peter"],
"operations" : ["anna", "teresa", "jack", "tom", "nigel", "katy"],
"sales" : ["bill", "jill"]
]
我想创建一个返回员工所在部门的函数。因此,该函数接受员工姓名并返回他们工作的部门。最快、最有效的方法是什么?或者甚至不应该首先使用字典并使用其他数据结构?
func printDepartmentOfEmployee(employee: String)
{
...
print("\(employee) works in department \(...)")
}
我能想到的最简单的“蛮力”方法是让一个大字典将每个员工映射到每个部门,但想看看是否有更好的方法。
最好的方法是什么?
【问题讨论】:
-
按键查找速度很快。按值查找不存在。因此,如果根据名称了解部门对您来说很重要,那么使用按部门键入的字典一开始就很愚蠢。重新开始并重新评估您的需求。
-
问题是员工多,部门少,所以才想到用这种结构。也许使用字典不是正确的数据结构。
-
我不相信有“蛮力”搜索。我唯一能想到的就是避免创建另一个字典。您可以遍历字典中的键,在该数组中搜索该键并继续搜索,直到找到该人。
-
这意味着您不必“复制”已有的信息。
标签: arrays swift performance dictionary