我正在尝试下面的代码。
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}
提前致谢。
答案 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)]