【问题标题】:Delete and re-index dictionary in Swift在 Swift 中删除和重新索引字典
【发布时间】:2017-06-13 17:28:21
【问题描述】:

您好,我有一本类型的字典:

1:[[12.342,34.234],[....,...],....] 2:[[......],[....]]....

现在我想知道是否有删除特定键和对应值的功能,以及重新索引它的功能,例如,如果我删除键 2 的对应值,键 3 应该成为键 2 和以此类推。

【问题讨论】:

  • 如果键是数字,为什么不直接使用数组并通过索引访问呢?
  • 它们是坐标数组,每个数组区分一条路线@vikingosegundo
  • 为什么你需要一个字典,它有 int 键?

标签: arrays swift dictionary indexing


【解决方案1】:

我认为你需要使用数组,而不是字典

var elms: [[[Double]]] = [
    [[0.1],[0.2, 0.3]],
    [[0.4], [0.5]],
    [[0.6]],
]

elms.remove(at: 1) // remove the second element

print(elms)

[
    [[0.10000000000000001], [0.20000000000000001, 0.29999999999999999]],
    [[0.59999999999999998]]
]

是的,输出值与原始值略有different

【讨论】:

    【解决方案2】:

    要删除键和值,只需执行dict[key] = nil

    至于重新索引,字典键没有任何特定的顺序,将所有值转移到不同的键不是字典的设计工作方式。如果这对您很重要,也许您应该改用一对数组之类的东西。

    【讨论】:

      【解决方案3】:

      字典没有排序。这意味着“密钥 3”变为“密钥 2”不是受支持的方案。如果键的顺序与您插入它们的顺序相同,那么到目前为止您已经很幸运了,因为这绝对不能保证。

      如果您想要排序并且您的键/值对列表很小(一百左右很小),您应该考虑使用数组元组:[(Key, Value)]。这保证了订购。如果您需要更大的东西或更快的键查找,您应该找到一种方法来定义键之间的排序关系(这样您可以说一个应该始终在某个其他键之后),并使用像 this one 这样的排序集合.

      【讨论】:

      • 谢谢,我想用 *.sorted{($1.key > $0.key)} 函数来订购字典
      猜你喜欢
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多