【问题标题】:Sort list of dictionaries with natsort to obtain natural sort order使用 natsort 对字典列表进行排序以获得自然排序顺序
【发布时间】:2015-10-22 10:09:37
【问题描述】:

我正在寻找一种方法来对字典列表进行排序以获得“自然排序顺序”。我找到了模块natsort,但显然我没有正确使用它来正确排序字典列表。谁能帮忙找出我的错误?

这是我的代码:

from operator import itemgetter
import natsort

# Example list an dict
list = ['13h', '1h', '3h']
dict = [{'a': '13h', 'b': 3}, {'a': '1h', 'b': 1}, {'a': '3h', 'b': 0}]

# Sort the list
natsort.natsorted(list, key=lambda y: y.lower())

# Sort the dict
# Later I also want to sort on several keys, therefore the itemgetter
sorted(dic, key=itemgetter(*['a']))

【问题讨论】:

  • 你试过了吗 - natsort.natsorted(dic, key=itemgetter(*['a']))
  • 没有。大声笑,它有效。这意味着我已经有了答案:/
  • 第一次使用key=lambda y: y.lower() 有什么原因吗?您的数据似乎已经是小写了。

标签: python sorting dictionary natsort


【解决方案1】:

您可以在代码中替换 natsort.natsorted 而不是 sorted(),它应该可以工作。示例 -

natsort.natsorted(dic, key=itemgetter(*['a']))

这应该返回一个字典列表,其中元素根据键 'a' 的值进行排序。

【讨论】:

  • 5 年过去了,我到处寻找这个 :)
猜你喜欢
  • 2014-08-02
  • 1970-01-01
  • 2011-02-02
  • 2015-03-14
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 2018-11-27
相关资源
最近更新 更多