python - 使用理解/lambda 表达式获取嵌套整数列表的元素出现次数
问题描述
刚刚浏览了列表、字典、集合理解和理解的 lambda 表达式,但我无法使用它们来捕获嵌套列表中整数的出现次数,如下例所示。那么,是否有一个带有理解或 lambda 表达式的解决方案来计算它,或者它是否超出了此类构造的能力?如果不可能,那么为什么不能用理解/ lambda 表达式来实现它的直觉是什么?
lst = [[0,1],[1,2],[3,4],[0,5]]
result = {0:2, 1:2, 2:1, 3:1, 4:1, 5:1}
我目前正在使用双 for 循环来进行计算。
解决方案
生成器表达式、列表推导等的构造非常适合单独映射序列中的项目。它们根本不用于聚合,这是您在此处尝试执行的操作,即组合多个项目的值。
出于您的目的,您可以使用collections.Counter
(它对计数项目进行聚合)和生成器表达式来代替嵌套列表:
from collections import Counter
dict(Counter(i for s in lst for i in s))
这将返回:
{0: 2, 1: 2, 2: 1, 3: 1, 4: 1, 5: 1}
推荐阅读
- angular - 'MatTableDataSource 类型的参数
' 不可分配给 'Collection 类型的参数 '。 - c - Flutter - 如何用c语言实时发送和接收语音数据?
- automapper - 使用 Automapper 的 IValueConverter 的问题
- java - Java 中的 Documentum API
- javascript - L.Minichart 不显示真实值
- python - 如何将 segy 转换为 npz?
- bash - “-sd+”在 bash 的粘贴命令中有什么作用?
- java - 使用 UnetSocket 在 unetstack 中创建客户端和服务器节点之间的通信
- javascript - 如何检查字符串是否包含数组中的某些单词?
- c++ - C++ 错误'未定义的对 Class::Function() 的引用