[英]Count number of values in nested lists inside a 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]]
}
我的目標是計算值的數量(在這種情況下為浮點數),假設其中一些“單元格”可能包含多個值(例如: '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
>>> len([c for a in d.values() for b in a for c in b])
17
您應該真正在交互式解釋器中嘗試這些方法,從最簡單的[x for x in d.values()]
的方法開始[x for x in d.values()]
然后[x for x in d.values()]
。
您無需為此任務創建平展列表。 這是一種方法:
from itertools import chain
res = sum(1 for _ in chain.from_iterable(map(chain.from_iterable, d.values())))
我們通過兩次應用chain.from_iterable
並處理此過程后的結果來處理嵌套列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.