如何在列表中找到彼此相似的項目。例如:在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