嵌套列表重复排名

考虑 Python 中的以下嵌套列表:


[

    ['Val1', 1, 'X'],

    ['Val2', 1, 'X'],

    ['Val2', 2, 'Y'],

    ['Val3', 2, 'Y'],

    ['Val4', 2, 'Y'],

    ['Val4', 3, 'Z'],

    ['Val5', 3, 'Z'],

    ['Val6', 3, 'Z'],

]

索引 0 处有重复项。我想从中获取一个新列表,删除重复项,保留索引 1 处具有最高值的列表。在上面的示例中,结果列表应如下所示:


[

    ['Val1', 1, 'X'],

    ['Val2', 2, 'Y'],

    ['Val3', 2, 'Y'],

    ['Val4', 3, 'Z'],

    ['Val5', 3, 'Z'],

    ['Val6', 3, 'Z'],

]


呼如林
浏览 84回答 3
3回答

手掌心

>>> from itertools import groupby >>> [max(g, key=lambda i: i[1]) for k, g in groupby(data, lambda i: i[0])] [['Val1', 1, 'X'],  ['Val2', 2, 'Y'],  ['Val3', 2, 'Y'],  ['Val4', 3, 'Z'],  ['Val5', 3, 'Z'],  ['Val6', 3, 'Z']]

jeck猫

使用熊猫x = [['Val1', 1, 'X'],    ['Val2', 1, 'X'],    ['Val2', 2, 'Y'],    ['Val3', 2, 'Y'],    ['Val4', 2, 'Y'],    ['Val4', 3, 'Z'],    ['Val5', 3, 'Z'],    ['Val6', 3, 'Z']]import pandas as pdpd.DataFrame(x).sort_values([0, 1]).drop_duplicates(subset=[0], keep='last').values.tolist()

慕斯709654

步骤1:根据第二个属性排序。步骤2:根据第一个属性进行排序。由于排序在 python 中是“稳定的”,因此步骤 1 中的排序顺序将在步骤 2 之后保留。l = # list of similarly formatted lists l = sorted(l, key=itemgetter(1)) l = sorted(l, key=itemgetter(0))或者,编写您自己的比较键函数。我认为这实际上应该有效,因为元组是按从左到右的顺序进行比较的:l = sorted(l, key=tuple)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python