如何从 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)
我有一个像 [{'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
, bothlist.sort()
andsorted()
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)