如何在Swift中访问字典中的随机元素

use*_*314 12 random dictionary swift

所以我得到以下代码:

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
Run Code Online (Sandbox Code Playgroud)

如何从字典中选择随机元素?我想我应该使用arc4random_uniform,但找不到任何文档.

Ale*_*yne 26

你必须抛出一些东西,但这似乎有效.

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
Run Code Online (Sandbox Code Playgroud)

基本上,生成零和总项数之间的随机索引值.获取字典的值作为数组,然后获取随机索引.

您甚至可以将其包装在扩展中以便于访问.

  • 怎么样将最后一行更改为... let randomVal = dict.values.array [index]我检查过它们似乎执行相同的操作.我想我会提到它. (2认同)
  • 嗯,我不认为提供的代码是有效的Swift - 以下对我有效:让randomVal = dict.values.array [index] (2认同)

Cœu*_*œur 5

Swift 4.2+ (Xcode 10+) 引入了两种简单的可能性。

要么randomElement

let randomVal = myDict.values.randomElement()
Run Code Online (Sandbox Code Playgroud)

随机元素

let randomVal = myDict.randomElement().value
Run Code Online (Sandbox Code Playgroud)