python - 计算字典内嵌套列表中的值的数量

标签 python list dictionary

我有以下字典:

d= {
'2018-01-01': [[1.0],        [2.0],        [3.0]],
'2018-01-02': [[4.0],        [5.0],        [6.0]],
'2018-01-03': [[7.0],        [8.0],        [9.0]],
'2018-01-04': [[10.0],       [11.0],       [12.0]],
'2018-01-31': [[13.0, 14.0], [15.0, 16.0], [17.0]]
}

我的目标是计算值的数量(在本例中为 float ),假设其中一些“单元格”可能包含多个值(例如:'2018-01-31'的值)。换句话说,我需要:

result=17

到目前为止,我能够计算“单元格”(子列表)的数量,但我不知道如何计算单个“单元格”内的多个值。我尝试过:

cols=len(d[[k for k in d.keys() if d[k]==max(d.values(),key=len)][0]])
cells = [[1 for j in range(cols)] for i in range(len(d))]
result = len([item for sublist in cells for item in sublist])

print(str(result))

输出:

15

提前非常感谢您。

最佳答案

选项 1
100% 扁平化 + len

>>> len([k for i in d.values() for j in i for k in j])
17

选项 2
sum + len + 部分扁平化
sum 与生成器理解结合使用。 3列表形式:

>>> sum(len([*a, *b, *c]) for (a, b, c) in d.values())
17

对于通用解决方案(具有多于/少于 3 个子列表),请使用 itertools.chain:

>>> from itertools import chain
>>> sum(len(list(chain.from_iterable(v))) for v in d.values())
17

关于python - 计算字典内嵌套列表中的值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50282540/

相关文章:

java - 具有抽象泛型和集合的 JPA 单表继承

dictionary - Lua 表 - 当删除较低的索引时,较高的索引全部下移 1 位以填补该位置

python - 如何将额外的结果从 python 生成器发送到消费者函数?

Android - 使用自定义 ArrayAdapter 获取 ListView 的每个 EditTexts 值

c - 如何将链表拆分为2个列表?

java - 包含引用 Map 中其他键的值的 Map 是有向图的最简单形式吗?

c# - 将字典 KeyCollection 转换为字符串数组

python - 动态循环遍历Python函数中的函数列表

python - 将张量从形状 (n, h, w, c) reshape 为 (n, h * w, c)

python - Seaborn Factorplot的源函数是什么