如何使用python [with Duplicates]查找列表中序列的长度?

时间:2016-08-30 14:07:39

标签: python

我正在尝试下面的代码。

from itertools import groupby

range_mod = ['P', 'P', 'P', 'P', 'N', 'N', 'N', 'N', 'P', 'P', 'P']

print(dict((i,len(list(j))) for i, j in groupby(range_mod)))

注意:输出不必在Dict中

实际输出:

{'P': 3, 'N': 4}

预期输出:我知道Dictionary不允许重复键。所以寻找其他选择

{'P': 4, 'N': 4, 'P' : 3}

提前致谢。

2 个答案:

答案 0 :(得分:8)

>>> print(list((i,len(list(j))) for i, j in groupby(range_mod)))
[('P', 4), ('N', 4), ('P', 3)]

这个怎么样? ^

答案 1 :(得分:1)

你可以这样做:

>>> lengths=[]
>>> for k, g in groupby(range_mod):
...    lengths.append({k:len(list(g))})
... 
>>> lengths
[{'P': 4}, {'N': 4}, {'P': 3}]

或者,更简洁:

>>> [{k:len(list(g))} for k, g in groupby(range_mod)]
[{'P': 4}, {'N': 4}, {'P': 3}]

或者元组:

>>> [(k,len(list(g))) for k, g in groupby(range_mod)]
[('P', 4), ('N', 4), ('P', 3)]