2017-05-25 43 views
0

KEY2的最小值從KEY1的最大的值的列表的對象我有這樣[{'year':2017,'q':2,'category'=c}]字典對象的列表,其中每個對象具有3個字段,如下:如何找到在python

[{2015,1,w} 
{2015,3,q} 
{2017,2,a} 
{2012,5,b} 
{2017,5,p} 
{2013,3,a} 
{2015,4,a} 
{2017,1,d} 
{2016,2,e} 
] 

如何能我首先按最大年份排序列表,然後在最大年份對象之間進行排序,我想查找具有最小鍵值2的對象。其實首先,我婉基於兩個鍵(最大爲key1然後分鐘密鑰2)具有以下列表中的列表進行排序:

[{2017,1,d} 
{2017,2,a} 
{2017,5,p} 
{2016,4,e} 
{2015,1,w} 
{2015,3,q} 
{2015,4,a} 
{2013,3,a} 
{2012,5,b}] 

終於從列表

+0

'{2015,1,W}' ​​- 這是無效的符號。它不能是一個字典。也許,你的意思是元組。無論如何,你應該更新你的問題 – RomanPerekhrest

回答

1

set是無序返回{2017,1,d},所以我想,要排序列表的列表,你可以使用sorted()做到這一點:

Python 2.4開始,雙方list.sort()sorted()增加了 參數指定在進行比較之前在每個列表元素 上調用的函數。

>>> a=[ 
... [2015,1,'w'], 
... [2015,3,'q'], 
... [2017,2,'a'], 
... [2012,5,'b'], 
... [2017,5,'p'], 
... [2013,3,'a'], 
... [2015,4,'a'], 
... [2017,1,'d'], 
... [2016,2,'e']] 
>>> 
>>> sorted(a,key=lambda x:(-x[0],x[1])) 
[[2017, 1, 'd'], [2017, 2, 'a'], [2017, 5, 'p'], [2016, 2, 'e'], [2015, 1, 'w'], [2015, 3, 'q'], [2015, 4, 'a'], [2013, 3, 'a'], [2012, 5, 'b']] 
0

我用過類似的東西,但你的對象必須是列表:

ordered_l =sorted(sorted(your_list,key=itemgetter(1),reverse=False),key=itemgetter(0),reverse=True) 
+0

抱歉沒有看到它已經回答 – Marco