【问题标题】:Sort an array of dictionaries by keys as Int按键对字典数组进行排序为 Int
【发布时间】:2018-12-22 21:57:30
【问题描述】:

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

【问题讨论】:

    标签: ios arrays swift sorting dictionary


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 非常感谢马特的回复,这完全有道理!非常抱歉这个问题,我对编码比较陌生,不知道这是不可能/不需要的......
    • 无论如何,您的问题可能是一个 x-y 问题,这意味着您并没有真正提出您想知道答案的问题。对于您真正想要做什么,您没有给出任何线索。但是,在我看来,您似乎在考虑一个 arrays 数组:[[0,0,0],[0,0],[0,0],[0,0]]。这就是您想要的,因为我们可以通过 number 访问每个元素,例如myArray[2][1]。当你想通过 number 访问某个东西时,那就是一个 array;数字是数组中元素的索引。
    • 再次非常感谢您的回复。是的,这正是我想做的,我会试试看!
    猜你喜欢
    • 2016-04-17
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多