按多个值对字典列表进行排序[重复]
问题内容:
这个问题已经在这里有了答案 :
按多个属性对列表进行排序? (6个答案)
4年前关闭。
我有以下意见
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(),但是找不到我想要的东西。
问题答案:
使用元组作为关键字对它们进行排序,如下所示:
tempdata['logs'] = sorted(tempdata['logs'],
key=lambda k: (k['starttime'], k['time']))
每个元素按顺序比较元组。
另外,通过这种方式,可以将值作为字符串而不是数字进行比较。不知道这是否与您有关。