Python:按元素排序列表的dict

时间:2017-09-26 14:37:29

标签: python-2.7 dictionary

我创建了一个列表字典。

{'chans': [['24', 'X', 'RCP', '8400.0', 'mex', '325.0K', '8', '50 1', '17', 266, **datetime.time(22, 0)**, '17', 266, datetime.time(23, 0), '00', '23', '00', 20.604799168660975, '041'], 
 ['24', 'X', 'RCP', '8400.0', 'ody', '325.0K', '4', '40 1', '17', 266, **datetime.time(17, 0)**, '17', 266, datetime.time(18, 0), '00', '18', '00', 16.31949387241184, '053'], 
 ['24', 'X', 'RCP', '8400.0', 'mro', '325.0K', '8', '50 1', '17', 266, **datetime.time(18, 0)**, '17', 266, datetime.time(19, 0), '00', '19', '00', 27.872042154574956, '074']]}

我需要使用日期时间对象(每个列表中的元素10)按升序对其进行排序。我坚持确定正确的键/值。从本质上讲,我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

您可以使用itemgetter,只需选择列表中的项目索引而非dict,我们无法订购词典,

from operator import itemgetter
import datetime

f = {'chans': [['24', 'X', 'RCP', '8400.0', 'mex', '325.0K', '8', '50 1', '17', 266, """datetime.time(22, 0)""", '17', 266, datetime.time(23, 0), '00', '23', '00', 20.604799168660975, '041'], 
 ['24', 'X', 'RCP', '8400.0', 'ody', '325.0K', '4', '40 1', '17', 266, """datetime.time(17, 0)""", '17', 266, datetime.time(18, 0), '00', '18', '00', 16.31949387241184, '053'], 
 ['24', 'X', 'RCP', '8400.0', 'mro', '325.0K', '8', '50 1', '17', 266, """datetime.time(18, 0)""", '17', 266, datetime.time(19, 0), '00', '19', '00', 27.872042154574956, '074']]}

sorted(f['chans'], key=itemgetter(10))

答案 1 :(得分:0)

sort功能

有一个sort函数(就地)和一个sorted函数(返回列表已排序)。其中每个都采用一个名为key的可选参数,在每个元素上调用该参数进行比较。在您的情况下,您想要调用sort(dictionary["chans"]),它将对列表进行排序。由于您希望按每个列表中的第11个元素进行排序,因此您可以这样做:

sort(dictionary["chans"], key = lambda sublist: sublist[10])

该键获取一个子列表并返回其第11个元素,因此sort正按其第11个元素(日期时间)对子列表进行排序。

您可以根据自己的需要制作key