当前位置: 首页 > 面试题库 >

在Swift中对字典排序

慎志国
2023-03-14
问题内容

我知道这个话题已经讨论过了,但是我无法解决寻找其他答案的问题,因此,对不起我了!

我需要按键对字典进行排序

codeValueDict = ["us": "$", "it": "€", "fr": "€"]

所以我需要这样的字典

sortedDict = ["fr": "€", "it": "€", "us": "$"]

但是我做不到

我试过了

let sortedKeysAndValues = sorted(dictionary) { $0.0 < $1.0 }

但是在我需要从该字典创建两个数组(键和值)之后,并使用该解决方案

codesArray = sortedKeysAndValues.keys.array

给我错误 ’[((String,String)]]’没有名为’keys’的成员, 因为该解决方案未完全返回字典。

所以我尝试了另一种解决方案:

    let prova = codiceNomeDict as NSDictionary
    for (k,v) in (Array(codiceNomeDict).sorted {$0.1 < $1.1}) {
        let value = "[\"\(k)\": \"\(v)\"]"
        println(value)
    }

哪个效果很好,但是我不知道如何创建一个新的 value 字典。

最好的解决方案是什么?如何使其运作?


问题答案:

sorted上面函数的输出是 Array 。因此,您无法像 字典 那样获得键和值。但是您可以使用map函数来检索那些排序的键和值

返回一个包含source 排序元素的Array
。排序算法不稳定(可以更改isOrderedBefore不能为其建立顺序的元素的相对顺序)。

let codeValueDict = ["us": "$", "it": "€", "fr": "€"]

let sortedArray = sorted(codeValueDict, {$0.0 < $1.0})
print(sortedArray)

let keys = sortedArray.map {return $0.0 }
print(keys)

let values = sortedArray.map {return $0.1 }
print(values)


 类似资料:
  • 问题内容: 是否有-(NSArray *)keysSortedByValueUsingSelector:(SEL)comparator的类似物? 如何在不强制转换为NSDictionary的情况下执行此操作? 我试过了,但这似乎不是一个好的解决方案。 例: 问题答案: 尝试: 更新: 从beta 3更新到新的数组语法和排序语义。请注意,我正在使用,而不是在最大程度上减少数组复制。该代码可以做得更紧

  • 问题内容: 我有一个字典,其中每个键都引用一个int值。根据值将键排序到列表中的最佳方法是什么? 问题答案: mydict = {‘a’:1,’b’:3,’c’:2} >>> sorted(mydict, key=lambda key: mydict[key]) [‘a’, ‘c’, ‘b’]

  • 问题内容: 我对Xcode在《 Swift编程语言指南》中给我进行此实验的答案感到有些困惑: 我知道随着字典的使用,最大的数字被设置为变量。但是,我对为什么Xcode会说要根据每次测试设置5次,1次或3次感到困惑。 查看代码时,我发现应该单独在“ Prime”中将其设置6次(2、3、5、7、11、13)。然后,它应该跳过“斐波那契”中的任何数字,因为这些数字都小于最大数字,该数字当前已从“ Pri

  • 问题内容: 我想在Swift中对字典进行排序。我有一本字典,例如: 等,我希望它像 等等 我在SO上尝试了许多解决方案,但没有人为我工作。我正在使用XCode6 Beta 5,在它上面有一些正在给编译器错误,在一些解决方案中有例外。因此,任何可以发布字典排序工作副本的人。 问题答案: 编辑: 上面代码中的排序数组仅包含键,而值必须从原始字典中检索。但是,也是(键,值)对的一对,我们可以使用全局函数

  • 问题内容: 我有以下字典。 如何根据排序。因此,结果字典将如下所示。 问题答案: 从订购的项目元组列表构造一个: (假设Python 3,在Python 2中应该做同样的事情。)

  • rank ▲ ✰ vote url 11 867 379 1107 url 用字典的值对字典进行排序 我有个字典,字典的值来自于数据库:一个是字符串,一个是数字.字符串是唯一的,所以键就是字符串. 我可以用键来排序,但是怎么用值来排序呢? 注:我已经看过另一个问题怎样对列表中的字典的键值对字典进行排序?,或许这种方法可以,但是我确实只需要一个字典,我想看看还有其他更好的方法. 对字典进行排序是不可