2016-01-02 187 views
2

我練迅速,我想遍歷一個字典打印鍵時避免重複的快捷鍵錯誤,但它給了我一個如何遍歷字典

fatal error: Dictionary literal contains duplicate keys

哪有刪除錯誤?

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

回答

6

每個字典鍵必須是唯一

let people = ["age1":14, "age2":15, "age3":75, "age4":43, "age5":103, "age6":87, "age7":12] 
for (key, value) in people { 
    print(value) 
} 
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)") 
} 
+0

我很喜歡這 – pkc456

1

正如其他人已經說過,你不能創造一個相同的密鑰確實出現,曾多次字典。

這就是說我真的很喜歡luk2302提供的解決方案,因爲如果提供了一個結構良好的方法。

在這裏,我只是添加另一種解決方案。

因爲在你的(錯誤的)詞典中的真實信息是value(不是鍵)有什麼用Dictionary的含義是什麼?

你可以簡單地使用數組

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