按多个值排序dicts列表

时间:2016-08-05 12:42:49

标签: python sorting dictionary

我有以下词典

tempdata = {'logs': [
    {'starttime':'901',
     'time':'5'
     },
    {'starttime':'902',
     'time':'3'
     },
    {'starttime':'900',
     'time':'2'
     },    
    {'starttime':'901',
     'time':'2'
     },
    {'starttime':'905',
     'time':'1'
     },
    {'starttime':'904',
     'time':'1'
     }
]
}

我想主要按starttime排序。我完美地做了:

 tempdata['logs'] = sorted(tempdata['logs'],key=lambda k: k['starttime'])

但是现在,我想按时间对它们进行排序。

预期输出:

tempdata = {'logs': [
    {'starttime':'900',
    'time':'2'
    },
    {'starttime':'901',
     'time':'2'
     },
    {'starttime':'901',
     'time':'5'
     },
    {'starttime':'902',
     'time':'3'
     },
    {'starttime':'904',
     'time':'1'
     },
    {'starttime':'905',
     'time':'1'
     }
]
}

我该如何完成这项任务?我查找了sorted(),找不到我要找的东西。

1 个答案:

答案 0 :(得分:2)

使用元组作为关键字对它们进行排序:

tempdata['logs'] = sorted(tempdata['logs'],
                          key=lambda k: (k['starttime'], k['time']))

每个元素按顺序比较元组。

作为旁注,这种方式将值作为字符串进行比较,而不是数字。不知道这是否与你相关。