swift – 按值排序字典键,然后按键排序
发布时间:2020-12-14 02:26:19 所属栏目:百科 来源:网络整理
导读:我想迭代字典的键,首先按值(降序)排序,然后按键(升序)排序 让dict = [“foo”:1,“bar”:1,“baz”:2,“qux”:2] 迭代的顺序应该是: [“baz”,“qux”,“bar”,“foo”] 我想打印: baz 2qux 2bar 1foo 1 Xcode 8 beta 6?Swift 3?Swift 4 extension Dic
我想迭代字典的键,首先按值(降序)排序,然后按键(升序)排序
让dict = [“foo”:1,“bar”:1,“baz”:2,“qux”:2] 迭代的顺序应该是: 我想打印: baz 2 qux 2 bar 1 foo 1
Xcode 8 beta 6?Swift 3?Swift 4
extension Dictionary where Value: Comparable { var valueKeySorted: [(Key,Value)] { return sorted{ if $0.value != $1.value { return $0.value > $1.value } else { return String(describing: $0.key) < String(describing: $1.key) } } } } let dict = ["foo" : 1,"bar" : 1,"baz" : 2,"qux" : 2] let keyValueArray = dict.valueKeySorted print(keyValueArray) // "[("baz",2),("qux",("bar",1),("foo",1)]" for (key,value) in keyValueArray { print(key,value) } Xcode 2.x let keyValueArray = dict.sort{ $0.0 < $1.0 }.sort{ $0.1 > $1.1} print(keyValueArray) // [(.0 "baz",.1 2),(.0 "qux",(.0 "bar",.1 1),(.0 "foo",.1 1)] 您还可以创建字典值可比较的扩展名: extension Dictionary where Value: Comparable { var valueKeySorted: [(Key,Value)] { return sort{ $0.1 > $1.1 }.sort{ String($0.0) < String($1.0) } } // or sorting as suggested by Just Another Coder without using map var valueKeySorted2: [(Key,Value)] { return sort{ if $0.1 != $1.1 { return $0.1 > $1.1 } else { return String($0.0) < String($1.0) } } } } 用法: let dict = ["foo" : 1,1)]" 如果你想迭代keyValueArray的元组 for (key,value) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |