繁体   English   中英

在字典中访问数组(swift)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM