迭代字典时如何避免swift中的重复键错误

时间:2016-01-02 18:57:56

标签: swift dictionary

我正在练习swift,我正在尝试迭代一个字典来打印密钥,但它给了我一个

  

致命错误:字典文字包含重复的键

如何删除错误?

let people = ["age":14, "age":15, "age":75, "age":43, "age":103, "age":87, "age":12]
for (key, value) in people {
    print(value)
}

3 个答案:

答案 0 :(得分:8)

每个字典键必须是唯一的

let people = ["age1":14, "age2":15, "age3":75, "age4":43, "age5":103, "age6":87, "age7":12]
for (key, value) in people {
    print(value)
}

答案 1 :(得分:2)

创建一个People结构或类,并在数组而不是字典中使用它的实例:

struct Person {
    var age : Int
}

let people = [Person(age: 14), Person(age: 15)] // and so on

for person in people {
    print(person)
}    

字典是唯一键到某个值的映射。因此,您之前所做的工作无效,因为您的密钥age不是唯一的。但是,您可以使用其他字典:

let people = [14: Person(age: 14), 15: Person(age: 15)] // and so on

for (key, value) in people {
    print("\(key) => \(value)")
}

答案 2 :(得分:1)

正如其他人已经说过的那样,你不能创建一个字典,其中相同的密钥会出现多次。

那说我真的很喜欢luk2302提供的解决方案,因为如果确实提供了结构良好的方法。

我在这里只是添加另一种解决方案。

由于您(错误)字典中的真实信息是value(不是密钥),使用Dictionary的含义是什么?

你可以简单地使用数组

let ages = [14, 15, 75, 43, 103, 87, 12]
ages.forEach { print($0) }