如何使用python[带重复项]查找列表中序列的长度?

如何使用python[带重复项]查找列表中序列的长度?,python,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} 预期输出:我知道字典不允许重复键。因此,寻找其他选择 {'P': 4, 'N'

我正在尝试以下代码

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}
预期输出:我知道字典不允许重复键。因此,寻找其他选择

{'P': 4, 'N': 4, 'P' : 3}
提前谢谢

>>> print(list((i,len(list(j))) for i, j in groupby(range_mod)))
[('P', 4), ('N', 4), ('P', 3)]
这个怎么样^

你可以做:

>>> 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)]

您从何处获取
P
计数?因为我们有两组“P”,字典正在被覆盖,所以“P”的值显示为“3”。我将修改我的预期输出。谢谢你的P数?在任何情况下,你最好得到一个类似于[('P',4),('N',4)…]的列表,看起来我的问题是重复的。但是我在搜索时找不到这个问题。无论如何,谢谢大家。问题是如何解决的。这正是我想要的。感谢Swakeert:)可以通过使用列表理解而不是外部调用
list
print([(i,len(list(j)))在groupby(range\u mod)]中为i,j打印([(i,len(list(j))))
。回答得好!