Python:按元素排序列表字典
我创建了一个列表字典。Python:按元素排序列表字典
{'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)以升序排序。我被困在确定正确的键/值。实质上,我不知道该怎么做。
sort
功能
有一个sort
功能(就地)和sorted
功能(返回列表排序)。其中每一个都有一个称为key
的可选参数,它在每个元素上被调用以进行比较。在你的情况下,你想打电话sort(dictionary["chans"])
,这将排序列表。既然你要在每个列表中的第11要素进行排序,你可以这样做:
sort(dictionary["chans"], key = lambda sublist: sublist[10])
关键需要一个子表,并返回其第11要素,所以sort
是他们的第11单元(日期时间)排序的子列表。
无论您想要满足您的需求,您都可以制作key
。
您可以使用itemgetter,只是在列表中选择该项目的索引不是字典,我们不能为了一个dictionnary,
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))
'itemgetter'是一件东西? :o很酷,感谢信息:P – HyperNeutrino
https://docs.python.org/2/library/operator.html#operator.itemgetter –
我看到现在发生的事情,我没有说明字典中的'混乱'部分。 – Eric
这个伎俩,非常感谢你! – Eric