我正在尝试为字典生成一个随机元素,然后返回键和值,以便可以同时操作两者。
我来自Python背景,我认为这阻止了我提出解决方案:
myDict = ["key1" : 200.0, "key2" : 180.0]
let random_key = myDict.randomElement()?.key
let random_value = myDict[random_key]
我收到一条错误消息,指出:
不能用索引类型为'String的下标'[String:Double]'的值
答案 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