【问题标题】:how to find object of min value of key2 from list of max values of key1 in python如何从python中key1的最大值列表中找到key2的最小值对象
【发布时间】:2017-10-26 00:07:31
【问题描述】:

我有一个字典对象列表,例如 [{'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 值的对象。实际上首先我想根据两个键(最大键1然后最小键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}]

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

【问题讨论】:

  • {2015,1,w} - 这是无效的表示法。它不能是一个字典。也许,你的意思是元组。无论如何,你应该更新你的问题

标签: python arrays list max min


【解决方案1】:

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

Python 2.4 开头,list.sort()sorted() 都添加了一个 key 参数指定要在每个列表元素上调用的函数 在进行比较之前。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 2020-12-02
      • 1970-01-01
      • 2021-10-10
      • 2011-12-12
      • 2019-12-09
      • 2015-06-29
      • 2019-08-01
      • 2020-03-08
      相关资源
      最近更新 更多