我有一个字典,[uid: true, uid: false, uid: false, uid: false]
。我如何在Swift中计算true
和false
值的数量,以便我可以看到在此字典中有1 true
和3 false
?swift:计算词典中的经常性值
回答
的最直接方式是使用专门用于此目的的结构:一计数的集合。没有原生Swift计数集,但可以使用NSCountedSet
。
计数集合的工作方式与集合完全相同,但是它计算了向元素添加元素的次数。
let dict = [
"key1": true,
"key2": true,
"key3": false
]
let countedSet = NSCountedSet()
for (_, value) in dict {
countedSet.add(value)
}
print("Count for true: \(countedSet.count(for: true))")
这对我所需要处理的数据最有效。感谢您的时间和答案。 – Hunter
使用filter
方法删除不需要的值,然后对结果调用count
。
// Get the count of everything which is true
let trueCount = dict.filter { $0.value }.count
// Get the count of everything which is false
let falseCount = dict.filter { !$0.value }.count
// A more efficient way to get the count of everything which is false
let falseCount = dict.count - trueCount
可以使用高阶函数像reduce
:
let trueFalstDict: [String: Bool] = ["id1": false, "id2": true, "id3": false, "id4": false]
var trueFalseCount: (trues: Int, falses: Int)
trueFalseCount.trues = trueFalstDict.reduce(0) { $0 + ($1.value ? 1 : 0) }
trueFalseCount.falses = trueFalstDict.reduce(0) { $0 + ($1.value ? 0 : 1) }
print(trueFalseCount) // (trues: 1, falses: 3)
使用@ deanWombourne的建议:
let trueFalstDict: [String: Bool] = ["id1": false, "id2": true, "id3": false, "id4": false]
var trueFalseCount: (trues: Int, falses: Int)
trueFalseCount = trueFalstDict.reduce((trues: 0, falses: 0)) {
return (
true: $0.trues + ($1.value ? 1 : 0),
false: $0.falses + ($1.value ? 0 : 1)
)
}
print(trueFalseCount) // (trues: 1, falses: 3)
在什么情况下一通? 'dict.reduce((trues:0,falses:0)){ return(true:$ 0.trues +($ 1.value?1:0), false:$ 0.falses +($ 1.value?0:1 )) }' – deanWombourne
@deanWombourne是的,绝对适用于一个班轮。 –
示例设置:
let dict = [
1: true,
2: false,
3: false,
4: false
]
使用NSCountedSet
:
let numTrue = NSCountedSet(dict.values).count(for: true)
let numFalse = dict.count - numTrue
使用reduce
:
let numTrue = dict.values.reduce(0) { $0 + ($1 ? 1 : 0) }
let numFalse = dict.count - numTrue
两种方法利用的事实Bool
只允许两个不同的值,允许简单计算例如假设您计算了true
计数(或反之亦然),则计算false
。
- 1. Swift中的计算常量
- 2. 经典数值计算MATLAB代码
- 3. 从swift中计算字词计数
- 4. 数值经济可计算性算法
- 5. C++编程 - 计算经常性增加
- 6. 计数词典中的词典数量
- 7. 从字典中计算单词吗?
- 8. 计数出现在词典(SWIFT)
- 9. Swift词典理解
- 10. iOS的SWIFT Propotional值计算
- 11. 计算特定html标记中单词的集合词典
- 12. SWIFT词典 - 访问具有多个值
- 13. Swift:类中的计算类型属性
- 14. 计算属性在swift中的使用
- 15. 的Python:计算词典的所有值zscores
- 16. iOS 7上的Swift词典
- 17. 计算字典中的值的频率
- 18. 计算单词频率并从中制作词典
- 19. Python:词典的列表。计算基于字典键的元素
- 20. 计算python字典中值的重复性
- 21. 计算总值字典
- 22. 嵌套的默认词典计数值
- 23. 在swift中更改计算属性
- 24. Marklogic值词典和单词词典
- 25. Swift计算UITextFields的值并返回值
- 26. 神经网络值计算?
- 27. 统计独特词汇并在Python中创建词典和计数的词典
- 28. Swift 2.0 beta词典扩展
- 29. Parse JSON Swift 3词典
- 30. 词典包含NSNull Swift
字典不能有多个相同的密钥,所以你给的例子在Swift中是不可能的。 – deadbeef
我假设'uid是很多不同的唯一ID的占位符? – deanWombourne
@deanWombourne是的,'uid'值是一个占位符。这将是实际的:65vsFeX5y9R69YuvltgS1dL6pFN2 – Hunter