如何向元组中的 *each* 重复值添加计数器元素?

How to add a counter element to *each* recurring value in a tuple?

我有一个这样的元组列表:

[('bike', '1'), ('bike', '2'), ('car', '3'), ('car', '4')]

我想在每次出现第一个元素时进行计数,并将其附加到元组的末尾

[('bike', '1', '1'), ('bike', '2', '2'), ('car', '3', '1'), ('car', '4', '2')]

我研究过计数器之类的方法,但似乎只能计算项目出现的总次数。我还发现了其他似乎只适用于列表而不适用于元组的方法。

如果您需要 运行 计数,您可以使用 defaultdict 来保留它:

from collections import defaultdict

data = [('bike', '1'), ('bike', '2'), ('car', '3'), ('car', '4')]

result = []
counts = defaultdict(lambda: 1)
for ele in data:
    k, v = ele
    result.append((k, v, counts[k]))
    counts[k] = counts[k] + 1

print(result)

输出

[('bike', '1', 1), ('bike', '2', 2), ('car', '3', 1), ('car', '4', 2)]

所以你有一个元组列表 您可以循环遍历列表中的数据,将其移动到另一个列表并检查新列表是否有该元素。