Dieser Code wird verwendet, um ein String-Array nach dem ersten Buchstaben zu gruppieren.Kombinieren Sie zwei Schleifen zu einem
//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)
Dieses Beispiel ausgeben würde ein Wörterbuch wie folgt aus:
[ "b": ["ba", "bb"],
"a": ["aa", "ab"] ]
Der Code hat zwei ähnliche for
Schleifen. Können sie zu einer einzigen Schleife zusammengefasst werden, ohne dass sich dies auf die Ausgabe auswirkt?
Das macht Sinn. Ich habe nicht an "groupBy" gedacht. Daher muss die Funktion nur prüfen, ob der Schlüssel bereits erstellt wurde, bevor das Element hinzugefügt wird. –
Kann die Reihenfolge der Schlüssel beibehalten werden? –
Wörterbücher haben keine Reihenfolge. Holen Sie sich die Liste der Schlüssel, sortieren Sie sie und durchlaufen Sie das Diktat in dieser Reihenfolge –