我想迭代字典的键,首先按值(降序)排序,然后按键(升序)排序
让dict = [“foo”:1,“bar”:1,“baz”:2,“qux”:2]
让dict = [“foo”:1,“bar”:1,“baz”:2,“qux”:2]
迭代的顺序应该是:
[“baz”,“qux”,“bar”,“foo”]
我想打印:
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)]"
for (key,value) }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。