如何检查元素是否在包含包含数组的字典的字典中?

时间:2016-12-12 18:42:04

标签: arrays swift

像这样编译一个数组:

var MyArray: [String:[String:[Int]]] = [
"xx": ["x1": [1, 2, 3], "x2": [4, 5, 6], "x3": [7, 8, 9]],
"yy": ["y1": [10, 11, 12], "y2": [13, 14, 15], "y3": [16, 17, 18]]

]

我想检查一下是否" xx"在MyArray。试过这个,但它有一个错误:

if [MyArray].contains("xx"{

                    }

但是它可以自动修正它

if [MyArray].contains(where: "xx"{

                    }

又一次有错, 任何想法??

4 个答案:

答案 0 :(得分:1)

我建议您使用可选绑定:

var MyArray: [String:[String:[Int]]] = [
    "xx": ["x1": [1, 2, 3], "x2": [4, 5, 6], "x3": [7, 8, 9]],
    "yy": ["y1": [10, 11, 12], "y2": [13, 14, 15], "y3": [16, 17, 18]]

]

if let outerDict = MyArray["xx"] {

    for entry in outerDict {
        print(entry)
    }

}

输出:

("x1", [1, 2, 3])
("x3", [7, 8, 9])
("x2", [4, 5, 6])

答案 1 :(得分:1)

由于你的“数组”是一个字典,并且你确定它的一个(键"xx")是否存在,一种非常简单的方法就是试图访问那个字典的特别关键。

var myDictionary: [String:[String:[Int]]] = [
    "xx": ["x1": [1, 2, 3], "x2": [4, 5, 6], "x3": [7, 8, 9]],
    "yy": ["y1": [10, 11, 12], "y2": [13, 14, 15], "y3": [16, 17, 18]]
]

if let _ = myDictionary["xx"] {
    print("Dictionary contains a key 'xx'")
}

W.r.t。您尝试使用contains应用于字典:另一种方法是明确检查key的集合是否为字典contains您的特定密钥:

if myDictionary.keys.contains("xx") {
    print("Dictionary contains a key 'xx'")
}

或者,直接使用每个字典项的key元组中的(key, element)来检查字典中是否存在给定的key

if myDictionary.contains(where: { $0.key == "xx" }) {
    print("Dictionary contains a key 'xx'")
}

答案 2 :(得分:0)

首先,MyArray是一个字典而不是一个数组,实际上它是一个字典,其中key是字符串,该值也是一个字典,其键是一个字符串,其值是整数数组。

因此,如果您想检查字典是否包含某些键,您可以在if条件中执行此操作:

if let value = MyArray["xx"] {
    // do some stuff    
}

答案 3 :(得分:0)

如果您不需要值,则采用最快捷方式:

if let _ = MyArray["xx"]{
    print("something or do something")
}

如果您需要值,请执行以下操作:

guard let someValue = MyArray["xx"]{
   return} else{
   someFunc(someValue)
    someProperty = someValue
}