这里编码的新手。
我有一个字典,将字符串作为键,将整数数组作为值,我试图从给定键中获取该键的字符串。不是键的值,而是键本身。现在,我只是在数组中放一个额外的字符串并调用它,但我的 Xcode 似乎有一个错误,它真的不喜欢混合类型数组并且它不起作用。
示例如下所示:
var allDict: [String: [Int]] = [:];
allDict.updateValue([1, 2, 3], forKey: "BAGEL"]);
allDict.updateValue([4, 5, 6], forKey: "DONUT"]);
allDict.updateValue([7, 8, 9], forKey: "MACARON"]);
例如,我可以用allDict["DONUT"]![1] //prints 5
很好地获取每个数组的值,但我想要的是获取键的字符串。
即我想使用 allDict["DONUT"]打印 DONUT
!这可能吗?提前谢谢你!
在这个例子中,你似乎知道你的钥匙要进去。
不过,您可以通过以下几种有用的方式恢复密钥:
假设你有一本字典
var dict: [String: Int] = ...
您可以获取键数组:
let keys = dict.keys // keys is of type [String]
您可以迭代键和值:
for (key, value) in dict {
...
}
当键发生冲突时,您可以合并 的字典并从任一字典中选择值:
let mergedDict = dict.merge(otherDict) { leftValue, rightValue in
return leftValue
}
简要解决原始问题的一个版本:
假设您具有某个键的值:
let donutValue = dict["DONUT"]
在其他地方,您不再可以访问密钥,您希望以某种方式从值中恢复它。 你能做的最好的事情就是尝试通过搜索字典来查找键,其中包含您拥有的值。
var searchResult = dict.first { key, value in
return value == donutValue
}
这假定字典中的值是相等的。 否则,您必须编写一些函数或逻辑来确定您是否在对应于donutValue
的字典中找到了该值。