按键排序列表然后在python中排序

时间:2015-09-24 04:30:14

标签: sorting python-3.x dictionary

我有一个列表,其中的键是日期,值是当天样本的小时

dtlist = [{'26/12/2010','01'},{'27/3/2008','00'},{'7/7/2007','10'},{'7/7/2007','23'}]

我应该得到的输出是

dtlist= [{'7/7/2007','10'},{'7/7/2007','23'},{'27/3/2008','00'},{'26/12/2010','01'}]

我希望按日期,月份,日期和日期按递增顺序逐个排序日期。非常感谢。

1 个答案:

答案 0 :(得分:1)

你有一个无序集合的列表。我假设您确实想要使用其他内容,例如列表列表或元组列表。

以下是如何使用列表列表或元组列表来完成的:

a = [['26/12/2010','01'],['27/3/2008','00'],['7/7/2007','10'],['7/7/2007','23']]

def k(a):
    d = list(map(int, a[0].split("/")))
    return d[::-1] + [int(a[1])]

print(sorted(a, key=k))

输出:     [[' 7/7/2007',' 10'],[' 7/7/2007',' 23'],[ ' 27/3/2008',' 00'],[' 26/12 / 2010',' 01']]

key函数返回列表中项目的键,然后排序函数使用该键对列表进行排序。

在此示例中,输入数据对应于以下键:

items: [['7/7/2007', '10'], ['7/7/2007', '23'], ['27/3/2008', '00'], ['26/12/2010', '01']]
keys:  [[2007, 7, 7, 10],   [2007, 7, 7, 23],   [2008, 3, 27, 0],    [2010, 12, 26, 1]]

我们按年份排序,然后是月份,接着是白天,最后是小时。