Piw*_*oli 2 python collections list
码:
sortedgroups = sorted(metagroups, key=lambda group: group[-1])
categories = map(operator.itemgetter(-1), sortedgroups)
categorycounts = collections.Counter(categories)
print('Writing output files')
with open('report.txt', 'a+') as f:
for category in categories:
f.write(category + '\n')
Run Code Online (Sandbox Code Playgroud)
所以如果我注释掉这个代码就行了:
categorycounts = collections.Counter(categories)
Run Code Online (Sandbox Code Playgroud)
如果我尝试计算类别列表中相同字符串的数量,for循环似乎会中断.是否collections.Counter()
修改原始类对象?
你好像在使用Python 3.
map
现在返回一个迭代器.collections.Counter(categories)
耗尽迭代器,就像list(m)
下面的例子一样
In [3]: m = map(bool, [1, 2, 3, 4])
In [4]: list(m)
Out[4]: [True, True, True, True]
In [5]: list(m)
Out[5]: []
Run Code Online (Sandbox Code Playgroud)
解决方案是在调用之前构建序列collections.Counter
.例如,可以使用以下任一方式构建列表list
:
categories = list(map(operator.itemgetter(-1), sortedgroups))
Run Code Online (Sandbox Code Playgroud)
或列表理解:
categories = [x[-1] for x in sortedgroups]
Run Code Online (Sandbox Code Playgroud)