按日期对列表的python字典排序
我作为实习生正在写一个Django项目。 我的python文件中有以下数据字典列表:按日期对列表的python字典排序,python,list,sorting,date,dictionary,Python,List,Sorting,Date,Dictionary,我作为实习生正在写一个Django项目。 我的python文件中有以下数据字典列表: list_sequences = {'01': [["Calcul Red Shift", "2014-09-24", "Running"]], '02': [["Calcul Dérive", "2014-09-22", "Stopped"]], '03': [["Calcul simple", "2014-04-12", "Paused
list_sequences = {'01': [["Calcul Red Shift", "2014-09-24", "Running"]],
'02': [["Calcul Dérive", "2014-09-22", "Stopped"]],
'03': [["Calcul simple", "2014-04-12", "Paused"]],
'04': [["Calcul Mental", "2014-02-14", "Failed"]],
'05': [["Sauvegarde des données", "2014-12-22", "Running"]],
'06': [["Envoi des données", "2014-07-17", "Stopped"]],
'07': [["Calcul de LA question", "2015-01-06", "Running"]],
'08': [["Refactorisation", "2014-09-24", "Paused"]],
'09': [["Cuisson de choucroute", "2013-11-13", "Running"]],
'10': [["Ecriture du rapport", "2014-02-03", "Running"]],
'11': [["Nettoyage des fichiers", "2014-09-24", "Paused"]],
'12': [["Création des utilisateurs", "2015-01-06", "Failed"]]
}
如您所见,每个元素的键是01,02
我还使用double[[],因为我使用字符串,否则网页在表格单元格中只显示一个字符
我想做的是按日期对整本词典进行排序
我尝试了以下方法:
list_sequences = collections.OrderedDict(sorted(list_sequences.items(), key=lambda e: e[0][1]))
还有:
list_sequences = collections.OrderedDict(sorted(list_sequences.items(), key=lambda e: datetime.datetime.strptime(e[0][1], '%Y-%m-%d')))
但它似乎不起作用。第一个以一种奇怪的方式对我的列表进行排序,第二个给了我一个:
time data '0' does not match format '%Y-%m-%d'
有什么想法吗
非常感谢 dict.items()
返回(键、值)对,因此值位于索引1(e[1]
)而不是0(e[0]
)。您需要将e[0][1]
更改为e[1][0][1]
演示:
>>> OrderedDict(sorted(list_sequences.items(), key=lambda e:datetime.strptime(e[1][0][1], '%Y-%m-%d')))
OrderedDict([('09', [['Cuisson de choucroute', '2013-11-13', 'Running']]), ('10', [['Ecriture du rapport', '2014-02-03', 'Running']]), ('04', [['Calcul Mental', '2014-02-14', 'Failed']]), ('03', [['Calcul simple', '2014-04-12', 'Paused']]), ('06', [['Envoi des donn\xc3\xa9es', '2014-07-17', 'Stopped']]), ('02', [['Calcul D\xc3\xa9rive', '2014-09-22', 'Stopped']]), ('11', [['Nettoyage des fichiers', '2014-09-24', 'Paused']]), ('01', [['Calcul Red Shift', '2014-09-24', 'Running']]), ('08', [['Refactorisation', '2014-09-24', 'Paused']]), ('05', [['Sauvegarde des donn\xc3\xa9es', '2014-12-22', 'Running']]), ('12', [['Cr\xc3\xa9ation des utilisateurs', '2015-01-06', 'Failed']]), ('07', [['Calcul de LA question', '2015-01-06', 'Running']])])
非常好,谢谢!我添加了一个“reverted”方法,以便最新的日期首先出现:list_sequences=collections.OrderedDict(reversed(sorted(list_sequences.items(),key=lambda e:e[1][0][1])@Frankynov您只需将
reverse=True
传递给sorted()
函数本身即可。