0
このコードは、文字列配列を最初の文字でグループ化するために使用します。2つのループを1つに結合する
//plain array
var list = ["apple", "apricot", "banana", "blackberry"]
//dictionary of arrays
var dict = Dictionary<String, Array<String>>()
//create necessary keys from first characters
for word in list {
dict[ String(word.characters.prefix(1)) ] = [ ]
}
//add words to the key of their first character
for word in list {
dict[ String(word.characters.prefix(1)) ]?.append(word)
}
//output dictionary
print(dict)
この例では、出力は、このような辞書であろう:
[ "b": ["ba", "bb"],
"a": ["aa", "ab"] ]
コードは、2つの類似for
ループを有しています。出力に影響を与える単一のループに結合することはできますか? groupBy
機能のための完璧な仕事のような
これは意味があります。私は 'groupBy'を考えなかった。したがって、関数は要素を追加する前にキーがすでに作成されているかどうかを確認するだけです。 –
キーの順序を保持することは可能ですか? –
辞書には順序がありません。キーのリストを取得し、それらをソートし、その順序で辞書を繰り返します。 –