如何在列表中找到彼此相似的项目。例如:在Python列表中找到彼此相似的项目
list = ["A","B", "B", "C", "A", "A" ]
#output:
A-1, B-1, B-2, C-1, A-1, A-2
如何在列表中找到彼此相似的项目。例如:在Python列表中找到彼此相似的项目
list = ["A","B", "B", "C", "A", "A" ]
#output:
A-1, B-1, B-2, C-1, A-1, A-2
听起来像是一份工作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优秀的答案!把一些解释,使OP和其他用户可以学习 –
@MitulShah,谢谢你。例如,如果我想使用字符串而不是索引, “A先,A秒”。有没有更好的方法,而不是分裂每个项目,并用'second'用'first'和'2'代替'1' – Juli
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否则,计数器增加
第二个a是a-2还是a-1?什么是 –
是的,第一个是a-1,第二个是a-2 – Juli