按键将字典数组排序为Int

时间:2018-07-14 21:12:21

标签: ios arrays swift sorting dictionary

如何对下面的词典数组进行排序,以使每个字典的键都按升序排列,而又不创建任何新内容(使用.sort而不是.sorted)?非常感谢您的帮助,非常感谢!

当前词典数组:

  • [[2:0,3:0,1:0],[2:0,1:0],[2:0,1:0],[2:0,1:0]]

我想要的东西:

  • [[1:0,2:0,3:0],[1:0,2:0],[1:0,2:0],[1:0,2:0]]

无效的代码:

var arrayOfDicts = [[2: 0, 3: 0, 1: 0], [2: 0, 1: 0], [2: 0, 1: 0], [2: 0, 1: 0]]

arrayOfDicts.sort(by: { $0.keys.first! > $1.keys.first! })

print(arrayOfDicts)
// prints [[2: 0, 3: 0, 1: 0], [2: 0, 1: 0], [2: 0, 1: 0], [2: 0, 1: 0]]

1 个答案:

答案 0 :(得分:2)

  

以便每个字典的键都按升序

    [[1: 0, 2: 0, 3: 0], [1: 0, 2: 0], [1: 0, 2: 0], [1: 0, 2: 0]]

说“使每本字典的键升序”意味着您要对每本实际字典进行排序(这就是“我想”)。但是字典无法排序。这个概念毫无意义,因为字典没有无序。其元素(或键)的打印顺序是随机的。

所以您要描述的是不可能的。你不能想要它。您可能会认为您想要的,但您不想要。那样对你没有好处; “排序的”字典(如果存在的话)不会改变任何内容,因为它不会影响字典的工作,即按某种顺序列出元素而不是检索通过键