从 Dict 获取密钥作为 Swift 中的字符串



这里编码的新手。

我有一个字典,将字符串作为键,

将整数数组作为值,我试图从给定键中获取该键的字符串。不是键的值,而是键本身。现在,我只是在数组中放一个额外的字符串并调用它,但我的 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的字典中找到了该值。

最新更新