簡體   English   中英

按值對快速詞典進行排序,然后對具有相同值的鍵按鍵對最終結果進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM