Python在排序后对列表列表重新排序

Python在排序后对列表列表重新排序,python,list,python-2.7,sorting,Python,List,Python 2.7,Sorting,我从两个单独的表中获取数据,如下所示 list_table_1 = models.my_table_1.objects.all().order_by("-date_field","time_field") ## data from table 1 list_table_2 = models.my_table_2.objects.all().order_by("-date_field","time_field") ## data from table 2 然后我把这两个列表放在一个列表中,比如说

我从两个单独的表中获取数据,如下所示

list_table_1 = models.my_table_1.objects.all().order_by("-date_field","time_field") ## data from table 1
list_table_2 = models.my_table_2.objects.all().order_by("-date_field","time_field") ## data from table 2
然后我把这两个列表放在一个列表中,比如说我的列表,并希望根据日期和时间以相反的顺序对它们进行排序,以便最新的顺序位于顶部。所以我这样做了: my_listkey=lambda项:项[0][1],反向=True

然后我得到这个:

[['InstaMojo', datetime.date(2015, 6, 30), datetime.time(10, 50, 54), u'status',u'buyer_name'], ['InstaMojo',datetime.date(2015, 6, 29), datetime.time(19, 46, 22), u'status', u'buyer_name'],['PayU',datetime.date(2015, 6, 30), datetime.time(15, 39, 11), u'status', u'firstname'], ['PayU', datetime.date(2015, 6, 29), datetime.time(15, 37, 29), u'status', u'firstname']]
但我需要如下输出:

[['PayU',datetime.date(2015, 6, 30), datetime.time(15, 39, 11), u'status', u'firstname'],['InstaMojo', datetime.date(2015, 6, 30), datetime.time(10, 50, 54), u'status',u'buyer_name'] ,['InstaMojo',datetime.date(2015, 6, 29), datetime.time(19, 46, 22), u'status', u'buyer_name'], ['PayU', datetime.date(2015, 6, 29), datetime.time(15, 37, 29), u'status', u'firstname']]
这方面的任何帮助都将是巨大的!提前谢谢

顺便说一句,我已经研究了这些问题,所以- 您应该为每个键创建一个元组日期和时间

my_list.sort(key=lambda x:(x[1], x[2]), reverse=True)
您应该为每个键创建一个元组日期和时间

my_list.sort(key=lambda x:(x[1], x[2]), reverse=True)
你的钥匙好像错了

lambda item:item[0][1]
将始终在第[0]个索引处为您提供元素的第一个字符。如果ypu希望根据日期进行排序,请使用此键

key= lambda x :x[1]
你的钥匙好像错了

lambda item:item[0][1]
将始终在第[0]个索引处为您提供元素的第一个字符。如果ypu希望根据日期进行排序,请使用此键

key= lambda x :x[1]

这将生成所需的输出:

my_list = sorted(my_list, key=operator.itemgetter(1, 2), reverse=True)
代码中的内容是按第一项的第二项排序:第[0]项是第一项,第[0][1]项是第二项。所以你是按“Instamojo”中的“n”排序,“PayU”中的“a”排序的,等等


operator.itemgetter具有您想要的语义;它从输入中选择一个元组,在本例中是第二项,第三项。然后进行排序或列出。排序按字典顺序对它们进行排序,以便在日期相同时按时间进行比较。

这将生成所需的输出:

my_list = sorted(my_list, key=operator.itemgetter(1, 2), reverse=True)
代码中的内容是按第一项的第二项排序:第[0]项是第一项,第[0][1]项是第二项。所以你是按“Instamojo”中的“n”排序,“PayU”中的“a”排序的,等等


operator.itemgetter具有您想要的语义;它从输入中选择一个元组,在本例中是第二项,第三项。然后排序或列出。排序按字典顺序对它们进行排序,这样如果日期相同,就可以按时间进行比较。

谢谢!正是我想要的!谢谢正是我想要的!谢谢你的迅速回复!我想要这样的东西谢谢你的迅速回复!我想要这种东西