[英]Sort swift dictionary by value and then sort the final result by key for keys having the same value
我有一個[myStruct:Int]字典,我想首先按值排序,然后對具有相同值的鍵進行第二排序,我想按'myStruct'中的字符串屬性'item'對它們進行排序
struct myStruct {
var item: String!
var amount: Int!
}
我試圖實現建議Swift:按值對字典鍵排序,然后按key排序 ,這是IMO的絕佳解決方案,但我無法針對我擁有的自定義結構實現它。
有什么幫助嗎?
要使用排序閉包實現引用的解決方案,您應該為結構定義相應的比較運算符
func < (lhs: myStruct, rhs: myStruct) -> Bool {
return lhs.item < rhs.item
}
假定您使結構可哈希化,使其可以成為字典的鍵並具有可比性,以便對其進行排序,則可以使用以下排序參數按值和鍵對字典進行排序:
let dict = [ "A" : 1, "B" : 2, "C" : 2, "D" : 2, "E" : 1 ]
for (key,value) in dict.sort({ $0.1 == $1.1 ? $0.0 < $1.0 : $0.1 < $1.1 })
{
print("\(value),\(key)")
}
// prints:
// 1,A
// 1,E
// 2,B
// 2,C
// 2,D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.