簡體   English   中英

如何將數組排序為字典?

[英]How can I sort an array into a dictionary?

假設我有一個包含多個國家名稱的數組,例如“澳大利亞,丹麥,英國,奧地利,澳大利亞,丹麥”,其中一些國家名稱出現了兩次。

如何將它們分類以根據國家/地區名稱形成字典。 因此,它們的鍵將是國家名稱,而元素將是國家。

如果我在數組中有兩個相同的國家,則關鍵將是該國家,要素將是這兩個國家。

我需要它,以便如果添加另一個國家/地區,它將為該國家/地區創建密鑰,而無需事先指定密鑰。

每個國家/地區都必須位於其國家/地區的鍵之下,而不取決於陣列中該國家/地區的出現情況。

我想我已經為它制定了一個基本算法,但是我似乎無法將其付諸實踐。

  1. 在枚舉數組時
  2. 檢查字典中的鍵是否與當前字符串匹配
  3. 如果是這樣,請將字符串添加到匹配鍵下的字典中
  4. 如果沒有創建密鑰,則將字符串放置在密鑰下方。

該算法正確還是至少朝正確方向邁出了一步?

謝謝您的幫助。

編輯:我們有一個包含國家名稱“澳大利亞,丹麥,英國,奧地利,澳大利亞,丹麥”的數組

我需要將其組織成一個基於國家/地區的字典,因為數組中有兩個國家/地區丹麥,所以我需要對其進行排序,如下所示:

Denmark: "Denmark", "Denmark"

關鍵是國家名稱,元素是字符串。

英國僅出現一次,因此字典的一部分將如下所示:

United Kingdom: "United Kingdom"

我希望我有更多的道理。

不知道這是否是您的意思。 不太清楚。

var dict = [String: [String]]()
let countries = ["Holland", "England", "France", "Belgium", "England"]

for country in countries {
    dict[country] = (dict[country] ?? []) + [country]
}

for (key, value) in dict {
    println("KEY: \(key) & VALUE: \(value)")
}

輸出:

KEY: England & VALUE: [England, England]
KEY: Belgium & VALUE: [Belgium]
KEY: Holland & VALUE: [Holland]
KEY: France & VALUE: [France]

編輯:
根據Martin R在他的評論中的鏈接進行了簡化。

最簡單的方法是僅遍歷數組並檢查鍵是否存在於字典中。 使字典的每個值成為NSMutableArray。

暫無
暫無

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

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