🍁
Swift: 文字列の配列を頭文字でグルーピングして辞書にする
let array = [
"apple",
"banana",
"cherry",
"aka",
"blue",
"chocolate",
"and",
"but",
"can"
]
👆を👇のようにしたい。
let dict = [
"a": ["apple", "aka", "and"],
"b": ["banana", "blue", "but"],
"c": ["cherry", "chocolate", "can"]
]
これまではこんな感じで書いていました。
var dict = [String: [String]]()
array.forEach { str in
let initial = str.first!.description
if dict.keys.contains(initial) {
dict[initial]?.append(str)
} else {
dict[initial] = [str]
}
}
実はDictionary(grouping:by:)
を使えば、もっとシンプルに書けました。
let dict = Dictionary(grouping: array) { $0.first!.description }
Discussion