在python列表中找到彼此相似的项目

时间:2014-07-01 08:15:17

标签: python list

如何在列表中找到彼此相似的相似项目。例如:

list = ["A","B", "B", "C", "A", "A" ]

#output:

A-1, B-1, B-2, C-1, A-1, A-2

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

代码说明:

  1. 使用变量stri来跟踪字母和计数器以获取计数
  2. 如果stri!=i分配新的stri,则增加计数器