python编辑lis中的重复元组

2024-09-28 23:46:35 发布

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

我的目标是: 在循环列表时,我想检查重复项,如果有重复项,我想在其中添加一个数字,请参见下面的示例

以我的列表输出为例:

[('name','company'), ('someguy','microsoft'), ('anotherguy','microsoft'), ('thirdguy','amazon')]

在一个循环中,我想编辑这些副本,所以我希望有微软1(如果有3个微软的家伙,那么第三个家伙将有微软2)而不是第二个微软

有了这个我可以过滤重复,但我不知道如何编辑他们直接在列表中

    list = [('name','company'), ('someguy','microsoft'), ('anotherguy','microsoft'), ('thirdguy','amazon')]

        names = []
        double = []
        for u in list[1:]:
            names.append(u[1])
            list_size = len(names)
            for i in range(list_size):
                k = i + 1
                for j in range(k, list_size):
                    if names[i] == names[j] and names[i] not in double:
                        double.append(names[i])

Tags: namein编辑amazon列表forsizenames
1条回答
网友
1楼 · 发布于 2024-09-28 23:46:35

这是一种使用collections.defaultdict的方法。你知道吗

例如:

from collections import defaultdict
lst = [('name','company'), ('someguy','microsoft'), ('anotherguy','microsoft'), ('thirdguy','amazon')]
seen = defaultdict(int)
result = []
for k, v in lst:
    if seen[v]:
        result.append((k, "{}_{}".format(v, seen[v])))
    else:
        result.append((k,v))
    seen[v] += 1

print(result)

输出:

[('name', 'company'),
 ('someguy', 'microsoft'),
 ('anotherguy', 'microsoft_1'),
 ('thirdguy', 'amazon')]

相关问题 更多 >