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

按键值对字典排序

商高谊
2023-03-14
问题内容
let dict: [String:Int] = ["apple":5, "pear":9, "grape":1]

如何根据Int值对字典进行排序,以便输出为:

sortedDict = ["pear":9, "apple":5, "grape":1]

当前尝试(排序不正确):

let sortedDict = sorted(dict) { $0.1 > $1.1 }

问题答案:

您需要对字典值而不是键进行排序。您可以从字典中创建一个元组数组,按其值对它进行排序,如下所示:

Xcode 9•Swift 4Xcode 8•Swift 3

let fruitsDict = ["apple": 5, "pear": 9, "grape": 1]
let fruitsTupleArray = fruitsDict.sorted{ $0.value > $1.value }

fruitsTupleArray // [(.0 "pear", .1 9), (.0 "apple", .1 5), (.0 "grape", .1 1)]

for (fruit,votes) in fruitsTupleArray {
    print(fruit,votes)
}

fruitsTupleArray.first?.key   // "pear"
fruitsTupleArray.first?.value   // 9

使用按键对字典进行排序

let fruitsTupleArray = fruitsDict.sorted{ $0.key > $1.key }
fruitsTupleArray  // [(key "pear", value 9), (key "grape", value 1), (key "apple", value 5)]

使用字典的键和本地化的比较来对字典进行排序:

let fruitsTupleArray = fruitsDict.sorted { $0.key.localizedCompare($1.key) == .orderedAscending  }


 类似资料:
  • 问题内容: 我有一组字典,我想通过每个字典中的“ itemName”键按字母顺序对它们进行排序。如何在Swift中执行此操作? 我想对itemsArray进行排序。 问题答案: 您可以使用的功能: 迅捷 > 3 不是很迅速,但您失去了类型安全性,但这确实起作用。 顺便说一句,您的代码中有很多强制转换,有可能导致应用程序崩溃,您应该考虑改用可选的转换。

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

  • 问题内容: 在发现了惊人的发现之后,我再次陷入了困境。 问题是我有一个形式的字典,我需要按其整数值的降序对其进行排序, 但是 如果两个元素的值相同,则按键的升序排列。 一个使它更清楚的例子: 经过研究后,我得出以下结论: 这是因为它对值和键都进行了反向排序。我需要不撤消的钥匙。 问题答案: 就像是

  • 问题内容: 这将是一个很好的方式,从去到 我检查了一些帖子,但它们都使用了返回元组的”sorted” 运算符。 问题答案: 标准Python字典是无序的。即使你对(key,value)对进行了排序,也无法以保留顺序的方式存储它们。 最简单的方法是使用OrderedDict,它可以记住元素插入的顺序: 没关系od打印方式;它会按预期工作: Python 3 对于Python 3用户,需要使用.ite

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

  • 问题内容: 我有一个从数据库中的两个字段读取的值字典:字符串字段和数字字段。字符串字段是唯一的,因此这是字典的键。 我可以对键进行排序,但是如何根据值进行排序? 问题答案: Python 3.7+或CPython 3.6 字典在Python 3.7+中保留插入顺序。在CPython 3.6中相同,但是它是一个实现细节。 要么 较旧的Python 无法对字典进行排序,只能获得已排序字典的表示形式。字