[英]Accessing Arrays in Dictionaries (swift)
我似乎找不到如何输入语法的解决方案。 我想访问并能够修改嵌套在较大字典中的数组内的各个整数。
这是一个例子:
var exampleDictionary = [ 1: [2,3] , 2: [4,5] , 3: [7,8] ]
print (exampleDictionary[2]!) // prints [4,5]
如何访问键2 (上面的4)的第一个值 ?
如何仅更改键2的第一个值 ?
我正在尝试类似的事情,但它不起作用:
exampleDictionary[2[0]] = (exampleDictionary[2[0]] - 3) // want to change [4,5] to [1,5]
print (exampleDictionary[2[0]]) // should print "1"
exampleDictionary[2 : [0]] = (exampleDictionary[2 :[0]] - 3)
print (exampleDictionary[2 : [0]])
您应该下标数组而不是下标:
exampleDictionary[2]![0] = (exampleDictionary[2]?[0] ?? 0) - 3
更安全的方法是使用可选绑定,如下所示:
if var array = exampleDictionary[2] {
array[0] -= 3
exampleDictionary[2] = array
}
您必须始终将Swift集合类型视为值类型,并且必须就地修改对象,例如
if let firstValueOfKey2 = exampleDictionary[2]?.first {
print(firstValueOfKey2)
exampleDictionary[2]!.first = firstValueOfKey2 - 3
print(exampleDictionary[2]!.first!)
}
首先,您有[Int: [Int]]
类型的字典,这意味着每个键的值都为Int
的数组。
1.如果你的exampleDictionary
无关类型的,指定的类型exampleDictionary
到[Int: [Int]]
这样你就不需要投它的下一个步骤。
var exampleDictionary: [Int: [Int]] = [ 1: [2,3] , 2: [4,5] , 3: [7,8] ]
2.访问所需的密钥。
var key2: [Int] = exampleDictionary[2]!
var firstValueOfKey2: Int = key2.first!
3.更改key2的值:
key2 = [1,5]
4.由于Swift, Collections
是值类型,这意味着指针指向内存中的新块,这意味着您不能直接从修饰符更改根对象的值。 那么您应该将最后一个结果分配给根对象。
exampleDictionary[2] = key2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.