使用变量作为键访问字典值:Swift

时间:2019-09-22 17:59:16

标签: swift dictionary

我正在尝试为字典生成一个随机元素,然后返回键和值,以便可以同时操作两者。

我来自Python背景,我认为这阻止了我提出解决方案:

myDict = ["key1" : 200.0, "key2" : 180.0]

let random_key = myDict.randomElement()?.key
let random_value = myDict[random_key]

我收到一条错误消息,指出:

  

不能用索引类型为'String的下标'[String:Double]'的值

3 个答案:

答案 0 :(得分:1)

几乎,您需要所有键的随机元素,所以它是

SELECT date, username, SUM(income) AS total 
    FROM payment
    GROUP BY date, username

在Swift中,变量名是 lowerCamelCased ,并且强制展开这两个表达式是安全的,因为肯定所有键和值都存在。

答案 1 :(得分:1)

randomElement()返回一个 optional ,如果集合(在您的情况下为字典)为空,则为nil。然后通过“可选链接”获得random_key,这也使其成为可选内容。

如果您知道字典不为空,则可以强制展开:

let myDict = ["key1" : 200.0, "key2" : 180.0]
let random_key = myDict.randomElement()!.key
let random_value = myDict[random_key]

实际上,您可以避免查找字典,因为randomElement()返回一个字典元素,它是一个键/值对:

let myDict = ["key1" : 200.0, "key2" : 180.0]
let randomElement = myDict.randomElement()!
let randomKey = randomElement.key
let randomValue = randomElement.value

如果字典可能为空,则使用可选绑定:

let myDict = ["key1" : 200.0, "key2" : 180.0]
if let randomElement = myDict.randomElement() {
    let randomKey = randomElement.key
    let randomValue = randomElement.value
    // ...
} else {
    // Dictionary is empty
}

答案 2 :(得分:0)

尝试这种方式。 error的{​​{1}}

optional

let random_key = myDict.randomElement()?.key //print(random_key) //option output if let _random_key = random_key{ let random_value = myDict[_random_key] print(random_value ?? 0) } 返回myDict.randomElement()?.key,这就是为什么需要安全展开的原因,因为到目前为止optional可能是nil