首页 > 解决方案 > 什么是使元组列表中的元素在python中唯一的有效方法?

问题描述

假设我有一个元组列表

l = [('A', 12345), ('A', 2435), ('A', 2342), ('B', 2968), ('B', 9483), ('C', 563)]

使列表中的项目独一无二的最有效方法是什么,如下所示:

l = [('A.1', 12345), ('A.2', 2435), ('A.3', 2342), ('B.1', 2968), ('B.2', 9483), ('C.1', 563)]

标签: pythonpython-3.xlist

解决方案


一种方法可能是分组,itertools.groupby()然后“扩展”这些组:

from itertools import groupby
from operator import itemgetter

l = [('A', 12345), ('A', 2435), ('A', 2342), ('B', 2968), ('B', 9483), ('C', 563)]


print([
    (f'{k}.{index}', v) 
    for k, g in groupby(l, itemgetter(0)) 
    for index, (_, v) in enumerate(g, start=1)
])

印刷:

[('A.1', 12345), ('A.2', 2435), ('A.3', 2342), ('B.1', 2968), ('B.2', 9483), ('C.1', 563)]

请注意,要使分组起作用,输入l需要按分组键排序,这似乎是此示例输入的情况。


推荐阅读