gpt4 book ai didi

swift - 在swift中按两个值对字典进行排序

转载 作者:可可西里 更新时间:2023-11-01 00:40:35 24 4
gpt4 key购买 nike

我有这样的字典:

 ["FLBEY023": ["Position": 8, "Page": 1],
"COSMAX826": ["Position": 6, "Page": 2],
"TOVIC029": ["Position": 7, "Page": 1],
"CGLYN188": ["Position": 2, "Page": 2],
"TOORL002B": ["Position": 1, "Page": 2],
"GSTOGFU096": ["Position": 6, "Page": 1],
"COSNAI423": ["Position": 2, "Page": 1],
"COSCOL681": ["Position": 3, "Page": 2],
"TONIV170": ["Position": 4, "Page": 1],
"SUMAL086A": ["Position": 7, "Page": 2],
"PEIAM004": ["Position": 5, "Page": 1],
"FOSCI012": ["Position": 1, "Page": 1],
"FOSWI009": ["Position": 4, "Page": 2],
"GSTODOV061": ["Position": 3, "Page": 1]]

现在我想为每个产品代码对这个词典进行排序。但我想按位置和页面对其进行排序。因此,例如,我希望它先运行位置然后再运行页码

["FOSCI012": ["Position": 1, "Page": 1],
"COSNAI423": ["Position": 2, "Page": 1],
"GSTODOV061": ["Position": 3, "Page": 1],
....
...
...
"TOORL002B": ["Position": 1, "Page": 2],
"CGLYN188": ["Position": 2, "Page": 2],
..

我将如何使用 Dictionary.sorted 方法来执行此操作。我了解如何根据一个元素而不是两个元素进行排序。

最佳答案

字典是无序的集合,您无法对它们进行排序。

但是,您可以使用 .sorted(by:)返回有序元组列表的方法,其中每个元组代表字典中的一个键值条目:

dictionary.sorted { (lhs, rhs) -> Bool in

if (lhs.value["Page"]! == rhs.value["Page"]!) {
return lhs.value["Position"]! < rhs.value["Position"]!
} else {
return lhs.value["Page"]! < rhs.value["Page"]!
}
}

结果如下:

[(key: "FOSCI012", value: ["Position": 1, "Page": 1]), 
(key: "COSNAI423", value: ["Position": 2, "Page": 1]),
...
(key: "TOORL002B", value: ["Position": 1, "Page": 2]),
(key: "CGLYN188", value: ["Position": 2, "Page": 2]),
...
]

在这里你可以download the playground .

关于swift - 在swift中按两个值对字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44176201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com