python - 如何为列表中的每个唯一 val 添加计数

标签 python string list counter defaultdict

假设我有一个列表。

temp = ['A', 'B', 'A', 'B', 'A', 'B']

我正在寻找一种方法来加入里面的字符串的计数。

预期输出:

['A_1', 'B_1', 'A_2', 'B_2', 'A_3', 'B_3']

我能够通过使用列表理解来解决它,但我正在寻找一种无需指定列表的方法 [1, 1, 2, 2, 3, 3]。有可能吗?

[j + "_" + str(i) for i, j in zip([1, 1, 2, 2, 3, 3], temp)]

最佳答案

您可以使用 collections.defaultdict带有 for 循环:

from collections import defaultdict

L = ['A', 'B', 'A', 'B', 'A', 'B']

dd = defaultdict(int)

res = []
for item in L:
    dd[item] += 1
    res.append(f'{item}_{dd[item]}')

print(res)

['A_1', 'B_1', 'A_2', 'B_2', 'A_3', 'B_3']

关于python - 如何为列表中的每个唯一 val 添加计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53098757/

相关文章:

java - 什么是 List 与 ArrayList?

python - Python 时间序列中的干预检测(Pulse、Trend、Shift)

c - C中基于字符串的链表产生段错误

python - 记录 pandas 中条件条目的位置

java - 使用 Java 和 RegEx 转换字符串中的大小写

javascript - 如何从 Javascript 日期中获取年份的最后 2 位数字

python - 此嵌套循环的列表理解语法是否正确?

java - 将一个列表的内容复制到另一个列表中(不是引用)

python - 使用 lxml 替换 HTML 标签并保留其内容

python - 组合 2 维数组形成 3 维数组