簡體   English   中英

從數組Swift生成按字母排序的字典

[英]Generate Sorted Dictionary by Letters from an Array Swift

我有很多部門的名字

var departments: Array<String>!

我想按字典中的字母順序對數組進行排序,例如字典應該像這樣

var MyDictionary = ["A": ["Affenpoo", "Affenpug", "Affenshire", "Affenwich", "Afghan Collie", "Afghan Hound"], "B": ["Bagle Hound", "Boxer"],
    "C": ["Cagle Cound", "Coxer"]]

部門數組不是靜態的

如何快速生成此詞典?

非常感謝

我的方法是迭代數組並采用每個條目的首字母。 從字典中檢索該字母的數組。 如果為零,則創建一個新數組。 將單詞添加到檢索到的數組中,然后將該數組存儲在字典中。

let departments = ["Affenpoo", "Affenpug", "Affenshire", "Affenwich", "Afghan Collie","Cagle Cound", "Coxer"]
var outputDict=[String:[String]]()

for word in departments {
    let initialLetter=word.substringToIndex(word.startIndex.advancedBy(1)).uppercaseString
    var letterArray=outputDict[initialLetter] ?? [String]()
    letterArray.append(word)
    outputDict[initialLetter]=letterArray
}

print(outputDict)

[“ C”:[“ Cagle Cound”,“ Coxer”],“ A”:[“ Affenpoo”,“ Affenpug”,“ Affenshire”,“ Affenwich”,“阿富汗牧羊犬”]]

編輯:Paulw11的解決方案更有效

我認為這個問題與swift無關,但是無論如何,請嘗試以下操作:

let a = ["All", "Cat", "red", "gat", "Star sun", "bet you", "Zeta Fog", "Tea", "Fox"]

let b = a.map{ $0.lowercaseString }

let c = b.sort()
let d = c.map{ $0[$0.startIndex.advancedBy(0)]}

var dictionary:[String:[String]] = [:]
let byInitial = d.map{ initial in

    let clustered = c.filter{$0.hasPrefix("\(initial)")}
    dictionary.updateValue(clustered, forKey:"\(initial)")
}
print("\(dictionary)")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM