python - 在列表理解中递增 defaultdict (Python)

标签 python list-comprehension

我有这个:

   self.lines = [...]
   cnt = defaultdict(int)
   for line in self.lines:
       cnt[line] += 1

现在可以了。但我想知道它(增加 defaultdict 中特定行的数量)是否可以使用列表理解来完成?

这是一个语法错误:

   [cnt[line] += 1 for line in self.lines]

顺便说一句,为什么不能在列表理解中使用这样的表达式?它很简单,并且会大大提高此类代码的简洁性和性能。

最佳答案

您的列表理解不起作用,因为赋值不是表达式。

您不应该使用列表理解来替换循环。写一个循环。列表解析用于构建列表。

为什么您认为列表理解会提高性能?如果有的话,它可能会损害性能,因为它需要分配并分配给它构建的临时列表,然后永远不会使用它。假设您的原始列表中有 1,000,000,000 行。

关于python - 在列表理解中递增 defaultdict (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16567738/

相关文章:

python - 在 python urllib.urlretrieve 中设置推荐 url

Python 列表理解语法错误

python - Python字典理解中的多重赋值

python:列表理解策略

python - 使用 SciPy 集成返回矩阵或数组的函数

python - 使用 strides 实现有效的移动平均滤波器

python - 将字符串转换为函数调用

python - 使用 python 的网络服务器

python - 复杂的列表理解与 Python 中的许多循环

python - 为什么在我的例子中 For 循环比 Map、Reduce 和 List 理解更快