按值对swift字典进行排序,然后按键为具有相同值的键对最终结果进行排序

时间:2016-01-29 21:06:52

标签: ios swift sorting dictionary

我有一个[myStruct:Int]字典,我想首先按值排序,然后选择第二个具有相同值的键,我想按字符串属性排序' item'在' myStruct'

struct myStruct {
    var item: String!
    var amount: Int!
}

我试图实现建议Swift: Sort dictionary keys by value, then by key,这是一个非常棒的IMO解决方案,但我无法为我自定义的结构实现它。

请帮忙吗?

2 个答案:

答案 0 :(得分:1)

要使用排序闭包实现引用的解决方案,您应该为结构定义相应的比较运算符

func < (lhs: myStruct, rhs: myStruct) -> Bool {
  return lhs.item < rhs.item 
}

答案 1 :(得分:1)

假设你使你的结构可以清理,以便它可以成为你的字典的关键字,并且可以进行比较,以便对它进行排序,你可以使用以下排序参数按值和键对字典进行排序: 让dict = [&#34; A&#34; :1,&#34; B&#34; :2,&#34; C&#34; :2,&#34; D&#34; :2,&#34; E&#34; :1] for(key,value)in dict.sort({$ 0.1 == $ 1.1?$ 0.0&lt; $ 1.0:$ 0.1&lt; $ 1.1}) {   打印(&#34; \(值),\(键)&#34) } //打印: // 1,A // 1,E // 2,B // 2,C // 2,D