如何从 python 中 key1 的最大值列表中找到 key2 的最小值的对象

how to find object of min value of key2 from list of max values of key1 in python

我有一个像 [{'year':2017,'q':2,'category'=c}] 这样的字典对象列表,其中每个对象都有 3 个字段,如下所示:

[{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}
]

如何首先按最大年份对列表进行排序,然后在最大年份对象之间进行排序,我想找到具有最小 key2 值的对象。实际上,首先我想根据两个键(最大 key1 然后最小 key2)对列表进行排序,得到以下列表:

[{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}]

最终 return {2017,1,d} 来自列表

set 是无序的,所以我想你想对列表列表进行排序,你可以使用 sorted() 来做到这一点:

Starting with Python 2.4, both list.sort() and sorted() added a key parameter to specify a function to be called on each list element prior to making comparisons.

>>> 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']]

我用过类似的东西,但你的对象必须是列表:

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