【问题标题】:How to avoid duplicate key error in swift when iterating over a dictionary迭代字典时如何避免swift中的重复键错误
【发布时间】:2016-01-02 18:57:56
【问题描述】:

我正在练习 swift,我正在尝试遍历字典以打印密钥,但它给了我一个

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

如何消除错误?

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

【问题讨论】:

  • 你可以创建一个字典数组,而不是像[["age":14], ["age":15], ...

标签: swift dictionary


【解决方案1】:

每个字典键必须是唯一的

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

【讨论】:

    【解决方案2】:

    正如其他人已经说过的,您不能创建一个字典,其中同一个键确实出现多次。

    也就是说我真的很喜欢 luk2302 提供的解决方案,因为 if 确实提供了一种结构良好的方法。

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

    由于您(错误)字典中的真实信息是value(不是关键),使用Dictionary 是什么意思?

    你可以简单地使用一个数组

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

    【讨论】:

      【解决方案3】:

      创建一个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)")
      }
      

      【讨论】:

      • 我真的很喜欢这个
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      相关资源
      最近更新 更多