加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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”,“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)]"

如果你想迭代keyValueArray的元组

for (key,value)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读