正如標題所示,我正在嘗試根據值計數對現有的 [Character : Int] 型別的字典進行排序,最重復的字符首先出現。以下代碼回傳錯誤error: cannot convert return expression of type '[(key: Character, value: Int)]' to return type '[Character : Int]。現在,我知道我的函式正在回傳一個元組陣列,但我不明白如何......
這是代碼:
let str = "the brown fox jumps over the lazy dog"
func characterCount(str: String) -> [Character : Int] {
var results: [Character : Int] = [:]
for char in str {
results[char] = 0
let charCount = str.filter { char == $0 }
results[char] = charCount.count
}
let sortedResults = results.sorted { $0.value < $1.value }
return sortedResults
}
print(characterCount(str: str))
uj5u.com熱心網友回復:
正如 Sweeper 所說,字典本質上是無序的,因此您需要將字典轉換為可排序的東西。這里最簡單的選項是元組陣列
let sorted = str
.reduce(into: [Character: Int]()){ $0[$1] = $0[($1), default: 0] 1}
.map{($0.key, $0.value)}
.sorted{$0.1 > $1.1}
此答案用于reduce(into:)從字串創建字典,但如果您愿意,可以使用 for 回圈。然后它將字典映射到一個元組陣列中,(Character, Int)其中 Character 是字典鍵(即字串字符),Int 是它的值(即字符的計數),并根據計數值對其進行排序。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/495240.html
