如何向元组中的 *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)]
所以你有一个元组列表
您可以循环遍历列表中的数据,将其移动到另一个列表并检查新列表是否有该元素。
我有一个这样的元组列表:
[('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)]
所以你有一个元组列表 您可以循环遍历列表中的数据,将其移动到另一个列表并检查新列表是否有该元素。