在Swift中从Dict作为字符串获取键

时间:2019-02-07 16:18:53

标签: swift dictionary

此处是编码的新手。

我有一个字典,将字符串作为键,将整数数组作为值,并且我试图从给定键中获取该键的String。不是密钥的值,而是密钥本身。现在,我只需要在数组中放入一个额外的String并调用它,但是我的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来获得每个数组的值,但是我想要的是获取键的String。

即我想使用allDict [“ DONUT”]打印DONUT!

这可能吗?预先谢谢你!

1 个答案:

答案 0 :(得分:0)

在此示例中,您似乎知道要输入密钥。

不过,您可以通过以下几种方式以有用的方式恢复密钥:

说你有一本字典

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的字典中找到了该值。

相关问题