【问题标题】:Sorting a [String:String] dictionary by value [duplicate]按值排序 [String:String] 字典 [重复]
【发布时间】:2016-02-20 23:45:32
【问题描述】:

这是我的字典:

var _dict :[String:String]=[
            "a":"h1",
            "b":"b1",
            "c":"j1",
            "e":"o1",
            "f": "m1",
            "g":"u1",
            "h":"r1"
        ]

我正在尝试按这样的值对其进行排序:

_dict = _dict.sort({ $0.1 > $1.1 })

但我收到此错误消息:

无法使用类型为“(@noescape ((String, String), (String, String)) -> Bool)”的参数列表调用“排序”

【问题讨论】:

  • 字典根据定义是一种无序集合类型,因此无法排序。
  • @Maysam 无需创建元组数组。如果你对字典本身进行排序,结果自然会是一个元组数组。

标签: swift


【解决方案1】:

没有排序字典这样的事情。字典是无序的。您必须考虑其他您想做的事情,例如创建一个元组数组并对其进行排序。

例子:

var arr = Array(_dict)
arr = arr.sort{ $0.1 > $1.1 }

【讨论】:

    【解决方案2】:

    字典 id 无序,但您可以获得已排序的键和值:

    var _dict :[String:String]=[
    "a":"h1",
    "b":"b1",
    "c":"j1",
    "e":"o1",
    "f": "m1",
    "g":"u1",
    "h":"r1"
    ]
    //get the keys and sort them.
    let keysAndValues = _dict.keys.sort().map { ($0, _dict[$0]!) }
    

    现在将字典转换为元组数组,其中元组的第一个元素是键,第二个是值。

    【讨论】:

    • 我想按值对它们进行排序:/
    猜你喜欢
    • 2013-02-19
    • 2020-08-26
    • 2011-12-06
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多