0

如何对以下字典数组进行排序,以便每个字典的键按升序排列,而不创建任何新内容(使用 .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]]
4

1 回答 1

2

这样每个字典的键都是升序的

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

说“使每个字典的键按升序排列”意味着您要对每个实际字典进行排序(这就是您的“我想要的”输出中似乎正在发生的事情)。但是字典无法排序;这个概念没有意义,因为字典没有顺序。其元素(或键)的打印顺序是随机的。

所以你描述的是不可能的。你不能想要它。你可能认为你想要它,但你不想要。这对你没有任何好处;一个“排序的”字典,如果它存在,它不会改变任何东西,因为它不会影响字典的作用,它不是按某种顺序列出元素,而是通过 key检索值。

于 2018-07-14T21:18:51.030 回答