How to access a random element in a dictionary in Swift

戏子无情 提交于 2020-04-08 09:22:11

问题


I got the following code:

var myDic = [String: Customer]()
let s1 = Customer("nameee", "email1")
let s2 = Customer("nameee2", "email2")
let s3 = Customer("nameee3", "email3")
myDic[s1.name] = s1
myDic[s2.name] = s2
myDic[s3.name] = s3

How can I select a random element from the dictionary? I think I should use arc4random_uniform but couldn't find any documentation on it.


回答1:


You have to cast some things around, but this seems to work.

var dict:[String:Int] = ["A":123, "B": 234, "C": 345]
let index: Int = Int(arc4random_uniform(UInt32(dict.count)))
let randomVal = Array(dict.values)[index] # 123 or 234 or 345

Basically, generate a random index value between zero and the total item count. Get the values of the dictionary as an array and then fetch the random index.

You could even wrap that in an extension for easy access.




回答2:


Swift 4.2+ (Xcode 10+) introduces two simple possibilities.

Either randomElement:

let randomVal = myDict.values.randomElement()

Or randomElement:

let randomVal = myDict.randomElement().value


来源:https://stackoverflow.com/questions/25456047/how-to-access-a-random-element-in-a-dictionary-in-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!