如何按键对字典数组进行排序?

How to sort array of dictionary by key?

我正在尝试对字典数组进行排序,但无法做到。

JSON 数组: [{"2": "5"}, {"0": "1"}, {"1": "3"}, {"3": "6"}]

预期数组[{"0": "1"},{"1": "3"},{"2": "5"},{"3": "6"}]

我正在尝试,但无法获得预期结果。

print(otpInputView.enteredValues.flatMap({ (dic) in
            return dic.keys.sorted()
        })

我期待高阶函数输出。 (我可以手动实现)

您的代码正在对字典键进行排序,但您应该做的是对数组by[进行排序=28=] 存在单个字典键。如您所见,输出数组中的字典被重新排列,这就是为什么您应该对数组而不是字典进行排序。

otpInputView.enteredValues.sorted {
    ...
}

现在我们有了字典 [=13=]</code>,我们想比较它们的单键(假设所有字典只有一个键)。我们可以通过:</p> <pre><code>otpInputView.enteredValues.sorted { [=11=].keys.first! < .keys.first! }

这按字典顺序对键进行排序。这些键似乎都是数字。如果是这种情况,并且如果你希望它们是数字,请先将它们解析为 Ints:

otpInputView.enteredValues.sorted {
    Int([=12=].keys.first!)! < Int(.keys.first!)!
}

我在这里使用了很多 ! 因为我对字典的键做了很多假设。如果您不能做出这些假设,请安全地解开这些可选值并返回默认值。