我从两个单独的表中获取数据,如下所示。你知道吗
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_list
,并希望根据日期和时间以相反的顺序对它们进行排序,以便最新的顺序在最前面。所以我做了这个:
my_list(key= lambda item:item[0][1],reverse= 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']]
这方面的任何帮助太好了!提前谢谢!你知道吗
你的
key
似乎错了。你知道吗总是在
[0]
索引处给出元素的第一个字符。如果ypu希望根据日期排序,请使用此键。你知道吗应该为每个键创建一个元组
(date, time)
这将生成所需的输出:
代码中的内容是按第一项的第二项排序:
item[0]
是第一项,item[0][1]
是第二项。所以你是按Instamojo中的“n”和PayU中的“a”排序的operator.itemgetter
具有您要查找的语义;它从输入中选择一个元组,在本例中是(第二项,第三项)。然后sorted
(或list.sort
)按字典顺序对它们进行排序,这样如果日期相同,就按时间进行比较。你知道吗相关问题 更多 >
编程相关推荐