字典中的随机元素
Random Elements from Dictionary
这是我的字典数组,
var myArrayOfDict = [["vegetables": ["CARROT","BEANS"], "fruits": ["APPLE","MANGO","BANANA"], "letters":["A","B","C","D"],"numbers":["ONE","TWO","THREE"],"shapes":["SQUARE","RECTANGLE","CIRCLE"]]]
我如何获得所需的输出,实际上我需要随机选择指定范围内的元素...(即)当我需要从字典中随机选择 3 个元素时,
[["fruits": ["APPLE","MANGO","BANANA"],"shapes":["SQUARE","RECTANGLE","CIRCLE"],"numbers":["ONE","TWO","THREE"]]]
当我只需要 2 个随机元素时,
[["shapes":["SQUARE","RECTANGLE","CIRCLE"],"fruits": ["APPLE","MANGO","BANANA"]]]
提前致谢,
这是一种使用 randomElement()
的解决方案。
func randomSelection(from dict: [String: [String]], count: Int) -> [String: [String]] {
guard !dict.isEmpty else { return [:] }
var result = [String: [String]]()
for i in 0..<count {
let element = dict.randomElement()! //We know dictionary is not empty
result[element.key] = element.value
}
return result
}
如果从 randomElemnt()
中多次 return 编辑同一元素,上述解决方案可能 return 字典中的元素少于预期。如果这应该被取消,下面的解决方案应该有效
func randomSelection(from dict: [String: [String]], count: Int) -> [String: [String]] {
guard !dict.isEmpty else { return [:] }
guard dict.count > count else { return dict }
var result = [String: [String]]()
while result.count < count {
let element = dict.randomElement()!
if result[element.key] == nil {
result[element.key] = element.value
}
}
return result
}
由于该函数将字典作为第一个参数,因此需要循环数组
for d in myArrayOfDict {
print(randomSelection(from: d, count: 2))
}
Array
myArrayOfDict
包含单个 Dictionary
。因此,从中获取随机元素没有意义。
正如您的示例所解释的,您需要从 Dictionary
本身获取随机元素。
因此,您可以使用 randomElement
来实现它。
let myArrayOfDict = ["vegetables": ["CARROT","BEANS"], "fruits": ["APPLE","MANGO","BANANA"], "letters":["A","B","C","D"],"numbers":["ONE","TWO","THREE"],"shapes":["SQUARE","RECTANGLE","CIRCLE"]]
var elements = [String : [String]]()
let count = 2
for _ in 0..<count {
if let element = myArrayOfDict.randomElement() {
elements[element.key] = element.value
}
}
print(elements)
这是我的字典数组,
var myArrayOfDict = [["vegetables": ["CARROT","BEANS"], "fruits": ["APPLE","MANGO","BANANA"], "letters":["A","B","C","D"],"numbers":["ONE","TWO","THREE"],"shapes":["SQUARE","RECTANGLE","CIRCLE"]]]
我如何获得所需的输出,实际上我需要随机选择指定范围内的元素...(即)当我需要从字典中随机选择 3 个元素时,
[["fruits": ["APPLE","MANGO","BANANA"],"shapes":["SQUARE","RECTANGLE","CIRCLE"],"numbers":["ONE","TWO","THREE"]]]
当我只需要 2 个随机元素时,
[["shapes":["SQUARE","RECTANGLE","CIRCLE"],"fruits": ["APPLE","MANGO","BANANA"]]]
提前致谢,
这是一种使用 randomElement()
的解决方案。
func randomSelection(from dict: [String: [String]], count: Int) -> [String: [String]] {
guard !dict.isEmpty else { return [:] }
var result = [String: [String]]()
for i in 0..<count {
let element = dict.randomElement()! //We know dictionary is not empty
result[element.key] = element.value
}
return result
}
如果从 randomElemnt()
中多次 return 编辑同一元素,上述解决方案可能 return 字典中的元素少于预期。如果这应该被取消,下面的解决方案应该有效
func randomSelection(from dict: [String: [String]], count: Int) -> [String: [String]] {
guard !dict.isEmpty else { return [:] }
guard dict.count > count else { return dict }
var result = [String: [String]]()
while result.count < count {
let element = dict.randomElement()!
if result[element.key] == nil {
result[element.key] = element.value
}
}
return result
}
由于该函数将字典作为第一个参数,因此需要循环数组
for d in myArrayOfDict {
print(randomSelection(from: d, count: 2))
}
Array
myArrayOfDict
包含单个 Dictionary
。因此,从中获取随机元素没有意义。
正如您的示例所解释的,您需要从 Dictionary
本身获取随机元素。
因此,您可以使用 randomElement
来实现它。
let myArrayOfDict = ["vegetables": ["CARROT","BEANS"], "fruits": ["APPLE","MANGO","BANANA"], "letters":["A","B","C","D"],"numbers":["ONE","TWO","THREE"],"shapes":["SQUARE","RECTANGLE","CIRCLE"]]
var elements = [String : [String]]()
let count = 2
for _ in 0..<count {
if let element = myArrayOfDict.randomElement() {
elements[element.key] = element.value
}
}
print(elements)