【问题标题】:Sort dictionary of arrays by both key and values in Swift在 Swift 中按键和值对数组字典进行排序
【发布时间】:2021-08-12 11:23:13
【问题描述】:

我有一本这样的字典:

dict = {
  "a": ["apple", "aeroplane", "ash"],
  "c": ["cat", "car"],
  "b": ["boy", "bit", "bee"]
}

我想用 swift 对其进行排序,结果应该是这样的:

dict = {
  "a": ["aeroplane", "apple", "ash"],
  "b": ["bee", "bit", "boy"],
  "c": ["car", "cat"]
}

数组中的键和值都应该按字母顺序排列。但是,我只能使用 .keys.sorted() 成功对键进行排序,并且未能按字母顺序对每个字典值中的数组进行排序。

【问题讨论】:

  • "我只能使用 .keys.sorted() 成功地对键进行排序" 这有什么区别?你不是要对dict的内容进行排序吗?
  • 我想对键和值进行排序。字典的键应该是 a、b、c.... 等,然后字典值数组也应该排序。
  • 您可以对字典值(即数组)进行排序,但不能对字典键进行排序。字典是键/值对的无序集合。

标签: ios arrays swift sorting dictionary


【解决方案1】:

首先我只想指出,对字典的键进行排序有点多余,因为您检查的是与给定键关联的值,而不是值的位置,对它们进行排序是没有意义的。

其次,对字典中的数组进行排序非常简单,首先您需要使用 for each 遍历字典,然后由于调用 .sorted() 后数组是不可变的,因此您将结果分配给与值关联的键你刚收到。

var dict : [String:[String]] = [
  "a" : ["apple", "aeroplane", "ash"],
  "c" : ["cat", "car"],
  "b" : ["boy", "bit", "bee"]
]

// sort arrays inside an item of the dictionary
for (key,value) in dict {
    dict[key] = value.sorted()
}

print(dict)

【讨论】:

  • 放弃对 enumerated 的调用,因为您没有使用偏移量。
  • 另外,使用 mapValues 会更容易。
  • 如果他想做一些额外的步骤,我想让他选择使用密钥
  • @Sultan,mapValues 是什么意思?
  • 字典有一个叫做“mapValues()”的函数,你可以用它来代替上面的实现
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 2011-07-08
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多