使用Swift在字典中添加值

sta*_*ack 3 swift ios8

我有这个字典:

var dict = ["cola" : 10, "fanta" : 12, "sprite" : 8]
Run Code Online (Sandbox Code Playgroud)

并且我想添加值例如将结果设为30,我该怎么做?换句话说,我怎样才能添加数字而不是单词?

Abi*_*ern 9

既然答案已经被接受并且它不是一个非常好的答案,那么我将不得不放弃对苏格拉底式的方法,并展示一种回答这个问题的更主题的方式.

鉴于你的字典:

var dict = ["cola" : 10, "fanta" : 12, "sprite" : 8]
Run Code Online (Sandbox Code Playgroud)

你可以通过创建一个数组dict.values并减少它们来获得总和

let sum = Array(dict.values).reduce(0, +)
Run Code Online (Sandbox Code Playgroud)

或者你可以使用简单的reduce形式,它不需要最初创建数组:

let sum = reduce(dict.values, 0, +)
Run Code Online (Sandbox Code Playgroud)


int*_*ist 5

接受的答案没有使用 swift 的力量

并且答案已经过时了。

最简单的更新解决方案是:

 let valuesSum = dict.values.reduce(0, +)
Run Code Online (Sandbox Code Playgroud)

从零开始,并对所有元素的值求和


Kal*_*nda 3

正如此处文档中所解释的。您可以通过字典的方法和属性或使用下标语法来访问和修改字典。阅读文档。

var dict = ["cola" : 10, "fanta" : 12, "sprite" : 8]
Run Code Online (Sandbox Code Playgroud)

要访问字典中的值,您可以使用下标语法:

if let cola = dict["cola"] as? Int { // to read the value
    // Do something 
}
dict["cola"] = 30 // to change the value  
dict["pepsi"] = 25 // to add a new entry to your dictionary
dict["fanta"] = nil // to delete the fanta entry. 
Run Code Online (Sandbox Code Playgroud)

读取字典中的所有值

var sum = 0
for (drinkName, drinkValue) in dict {
    println("\(drinkName): \(drinkValue)")
    sum += drinkValue
}
Run Code Online (Sandbox Code Playgroud)

或者你可以

var sum = 0
for drinkValue in dict.values {
   sum += drinkValue
}
Run Code Online (Sandbox Code Playgroud)