繁体   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