【问题标题】:Sorting a dict based on one of the multiple values of key根据键的多个值之一对字典进行排序
【发布时间】:2018-11-03 23:54:11
【问题描述】:

我的字典看起来像这样

t={'Name1':{"Jf":0.89,"Date":"09-10-2018"},'Name2':{"Jf":0.77,"Date":"09-11-2018"}}

如何根据 Jf 值对 dict 进行降序排序。谢谢!!

【问题讨论】:

  • 到目前为止你尝试过什么?请发布您的代码来证明解决该问题的努力。

标签: python python-3.x sorting dictionary


【解决方案1】:

您可以使用t.items(),它将返回tuple 对象列表,key0 索引和value 在索引1。降序使用reverse=True

sorted_dict = sorted(t.items(), key = lambda x: x[1]['Jf'], reverse=True)
print(sorted_dict)

或者如果你只是对值感兴趣,你可以从 dict 中获取values() 并使用sorted

sorted_dict = sorted(t.values(), key = lambda x:x['Jf'], reverse=True)
print(sorted_dict)

【讨论】:

  • 谢谢,您能否编辑第一个答案,因为每个人都希望保留他们的密钥,并为您的第二个答案添加 reverse=True。
【解决方案2】:

Python 字典不保留顺序,因此可以将其排序到列表中:

t = {'Name1': {"Jf": 0.89, "Date": "09-10-2018"}, 'Name2' {"Jf": 0.77, "Date": "09-11-2018"}}
sorted(t.items(), key=lambda item: item[1]['Jf'])

应该给出结果:

[('Name2', {'Jf': 0.77, 'Date': '09-11-2018'}), ('Name1', {'Jf': 0.89, 'Date': '09-10-2018'})]

附带说明,您可以考虑使用日期时间库而不是将日期编码为字符串;例如:

from datetime import date
name1_date = date(2018, 9, 11)
name1_date.month  # Returns 9

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    相关资源
    最近更新 更多