簡體   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