我有一個字典,[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