【问题标题】:sort a list of dictionaries with multiple keys [duplicate]使用多个键对字典列表进行排序[重复]
【发布时间】:2018-07-06 22:02:34
【问题描述】:

我有一个列表中的字典列表,需要按点键对列表进行排序。

我能够使用“点”列表的第一个位置进行排序,但希望根据第一个位置和第二个位置进行排序。

a = [
    {
    'label':'a',
    'points': [[70,2],[60,4]]
    }
    ,
    {
    'label':'b',
    'points': [[90,6],[80,8]]
    }
    ,
    {
    'label':'c',
    'points': [[50,10],[40,12]]
    }

]

def sort_point_by_first_occur(item):
    print item['points'][0][0]
    return item['points'][0][0]

print sorted(a, key=sort_point_by_first_occur)

当前输出:-

[{'points': [[50, 10], [60, 4]], 'label': 'a'}, {'points': [[50, 2], [40, 12]], 'label': 'c'}, {'points': [[90, 6], [80, 8]], 'label': 'b'}]

异常输出:

[{'points': [[50, 2], [60, 4]], 'label': 'a'}, {'points': [[50, 10], [40, 12]], 'label': 'c'}, {'points': [[90, 6], [80, 8]], 'label': 'b'}]

【问题讨论】:

  • 你的意思是输出中的[70, 2]

标签: python


【解决方案1】:

我建议将权重设为 2 个值

def sort_point_by_first_occur(item):
    weighted = item['points'][0][0]*1000 + item['points'][0][1]
    return weighted

这样,如果第一个位置相同,第二个将是决胜局

【讨论】:

    猜你喜欢
    • 2020-10-04
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    相关资源
    最近更新 更多