如何获取具有最高编号([a,3])的列表([a,2],[a,1],[a,3])

2024-06-16 11:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个

list=[[a,2],[a,1],[a,3],[b,5],[b,7],[b,6],[c,20],[c,23],[c,30]].

如何获得每个字母的最高数字列表?这个列表会把它附加到另一个包含每个字母的最高数字的列表中吗?你知道吗

我试过使用下面的代码,但我对python编程是个新手,对数据结构或编程了解不多。你知道吗

for letter in range(len(final)):
    array1=[]
    array2=[]
    highestvalue=0
    if final[letter][0] == final[letter+1][0]:
        if final[letter][2] < final[letter+1][2]:
            highestvalue=final[letter+1][2]
            array1.append(final[letter][0])
            array1.append(highestvalue)
            array2.append(array1)

有没有办法把[[a,3],[b,7],[c,30]]从列表中去掉?你知道吗

[编辑] 实际上,我的列表是[[a,abc,2],[a,def,1],[a,ghi,3],[b,jkl,5],[b,lmn,7],[b,opq,6],[c,rst,20],[c,vwx,23],[c,yzz,30]]。你知道吗

我希望创建一个列表来存储变量[[a,ghi,3],[b,lmn,7],[c,yzz,30]]。如何创建包含第二个元素、字母和最大值的列表?你知道吗


Tags: 列表if编程字母数字listfinalletter
3条回答

因为你标记了pandas

pd.DataFrame(l).groupby(0).max().reset_index().values.tolist()
Out[535]: [['a', 3], ['b', 7], ['c', 30]]

您可以使用^{}将子列表按字母分组,并在每个组中查找最大值:

from operator import itemgetter as g
from itertools import groupby

[max(v, key=g(1)) for k, v in groupby(l, g(0))]
# [['a', 3], ['b', 7], ['c', 30]]
>>> foo = [['a', 2],['a', 1],['a', 3],
           ['b', 5],['b', 7],['b', 6],
           ['c', 20],['c', 23],['c', 30]]
>>> print({key:value for key, value in sorted(foo)})
{'a': 3, 'b': 7, 'c': 30}

相关问题 更多 >