如何在列表中找到彼此相似的相似项目。例如:
list = ["A","B", "B", "C", "A", "A" ]
#output:
A-1, B-1, B-2, C-1, A-1, A-2
答案 0 :(得分:3)
听起来像是itertools.groupby
的工作:
>>> from itertools import groupby
>>> lst = ["A","B", "B", "C", "A", "A" ]
>>> ['{}-{}'.format(x, i) for k, g in groupby(lst) for i, x in enumerate(g, 1)]
['A-1', 'B-1', 'B-2', 'C-1', 'A-1', 'A-2']
如果您需要字符串作为输出,请使用str.join
:
>>> ", ".join('{}-{}'.format(x, i) for k, g in groupby(lst) for i, x in enumerate(g, 1))
'A-1, B-1, B-2, C-1, A-1, A-2'
groupby
做的是按值对项目进行分组(如果我们提供任何内容,则使用键功能),然后我们使用enumerate()
循环遍历每个组以获取索引以及项目
答案 1 :(得分:0)
list = ["A","B", "B", "C", "A", "A" ]
stri=''
counter=1
for i in list:
if stri!=i:
stri=i
counter=1
else:
counter+=1
print stri,'-',counter
代码说明:
stri
来跟踪字母和计数器以获取计数stri!=i
分配新的stri,则增加计数器