按多个值对字典列表进行排序

7

我有以下字典

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()函数,但找不到我需要的内容。


谢谢 @Mephy,我找不到那个,太完美了!我会把这个问题留在这里,因为我的一个问题涉及到字典/列表,另一个问题涉及到列表/元组。 - Islarf
为什么这些问题总是***简单的整数! - Micah B.
1个回答

16

使用元组作为键来对它们进行排序,像这样:

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

元组按顺序逐个元素进行比较。

另外需要说明的是,使用此方式进行比较时,值将作为字符串而非数字进行比较。不确定这是否与您相关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接