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

2024-10-01 07:42:20 发布

您现在位置: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}
]

如何先按max year排序,然后在max years对象之间排序,我想找到具有minkey2值的对象。实际上,首先我想根据两个键(max key1然后min 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}]

最后从列表中返回{2017,1,d}


Tags: 对象列表字典排序minyearmaxkey2
2条回答

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)

相关问题 更多 >