通过Swift中的键获取字典中项目的索引
我这样做是为了在字典中循环,直到找到匹配的键为止。我的字典定义为[Int:String]通过Swift中的键获取字典中项目的索引,swift,Swift,我这样做是为了在字典中循环,直到找到匹配的键为止。我的字典定义为[Int:String] var index = 0 for (key, value) in mylist! { if key == property.propertyValue as! Int { // use index here } index += 1 } 有更好的方法吗?我看到了一些过滤的例子(类似于下面的例子),但我不知道如何使用字典。我可以用这样的方法来查找项目的索引吗?还是有
var index = 0
for (key, value) in mylist! {
if key == property.propertyValue as! Int {
// use index here
}
index += 1
}
有更好的方法吗?我看到了一些过滤的例子(类似于下面的例子),但我不知道如何使用字典。我可以用这样的方法来查找项目的索引吗?还是有别的办法
mylist.filter{$0.key == 1}
更新:
这项工作:
let index = Array(mylist!.keys).index(of: 1)
但这并不是:
let index = mylist!.index(forKey: 1)
看来他们两个都应该工作。我想知道为什么第二本没有。字典是无序的集合类型,没有索引 您可以通过键直接获取值
let value = mylist[property.propertyValue as! Int]
如果我理解正确,您可以这样做:
let myList = [
2: "Hello",
4: "Goodbye",
8: "Whats up",
16: "Hey"
]
let index = Array(myList.keys).index(of: property.propertyValue)
然后再找到你要找的钥匙
let key = Array(myList.keys)[index!]
正如在其他答案中所说,字典可能不是您要寻找的数据结构。但这应该能回答你提出的问题。给出你的字典
let dict = [1:"a", 2:"b", 3: ""]
您可以通过简单的编写来提取给定键(例如,`1)的索引
let indexForKey1 = dict.index(forKey: 1)
获取所有索引
您还可以构建一个字典,其中它们的键是索引,值是dict的键
let indexes = dict.keys.map { dict.index(forKey: $0) }
顺便问一下:你真正需要做什么
字典键未排序。做你正在尝试的事情是没有意义的。为什么你需要一个“索引”?为什么不简单地使用subscripting:
如果让value=mydict[key]{…}
?似乎您已经根据您对下面答案的评论发布了一个问题。你应该重做你的问题,使之与你试图解决的实际问题有关(设置选择器视图)。字典是一个集合,因此有索引:)甚至还有一个索引(forKey:)
方法。伪索引,Martin,因为它符合特定的收集协议,将字典映射到引擎盖下的元组。我不需要这个值。我只需要索引,以便将UIPickerView设置为正确的项。for循环可以工作,但对于我所需要的东西来说似乎很麻烦。我是这样设置我的选择器的:picker.selectRow(index,inComponent:0,animated:false)@Primico:听起来好像你依赖于字典条目的特定顺序。您可能应该改为使用数组。Dictionary.Index
vadian的“伪索引”是什么?至少对于本机存储,索引对应于哈希表中给定存储桶的偏移量。听起来像是一个合适的索引;)