如何将数组排序到字典中?

时间:2015-05-16 16:36:14

标签: ios swift sorting

我们说我有一个包含多个国家/地区名称的数组,例如"澳大利亚,丹麦,英国,奥地利,澳大利亚,丹麦和#34;一些国名出现了两次。

如何根据国家/地区名称对它们进行排序以形成字典。所以他们的关键是国名,而元素就是国家。

如果我的阵列中有两个国家/地区相同,则关键是国家/地区,而这些国家/地区将是这两个国家/地区。

我需要它,这样如果我添加另一个国家,它将为国家制作一个密钥,而无需事先指定密钥。

每个国家/地区都需要位于其所在国家/地区的关键字位置,而不依赖于阵列中国家/地区的出现情况。

我认为我已经为它制定了一个基本的算法,但我似乎无法将其付诸实践。

  1. 枚举数组
  2. 检查词典中的某个键是否与当前字符串匹配
  3. 如果是,请将字符串添加到匹配键
  4. 下的字典中
  5. 如果它没有创建密钥并将字符串放在密钥下面。
  6. 这个算法是正确的还是至少朝着正确的方向迈出了一步?

    感谢您的帮助。

    编辑: 我们有一个数组,其中包含国家名称"澳大利亚,丹麦,英国,奥地利,澳大利亚,丹麦"

    我需要将它组织成一个基于国家/地区的字典,因为我们需要对数组中的两个国家/地区丹麦进行排序,因此看起来像这样:

    2015-05-16 18:44:42

    键是国家/地区名称,元素是字符串。

    英国只出现一次,因此字典的一部分将如下所示:

       Calendar calendar = new GregorianCalendar();
        TimeZone timeZone = TimeZone.getTimeZone("Europe/Kopenhagen");
        calendar.setTimeZone(timeZone);
    
       System.out.println(calendar);
    

    我希望我更有道理。

2 个答案:

答案 0 :(得分:4)

不确定这是不是你的意思。这不是很清楚。

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的链接进行了简化。

答案 1 :(得分:0)

最简单的方法是循环遍历数组并检查字典中是否存在密钥。将字典的每个值设为NSMutableArray。