我有一個字典,其中的值是一個串列串列,我想計算某個值在字典中出現的次數。我試過這樣的事情:
d = { 'A': ['apple', 'banana', 'grape'],
'B': ['cherry', 'tomato', 'apple'],
'C': ['grape', 'kiwi', 'banana']
}
print(list(d.values()).count('apple'))
但是當我嘗試這樣做時,我會歸零
uj5u.com熱心網友回復:
轉換d.values()為串列并使用collections.Counter
from collections import Counter
d_vals = []
for v in d.values():
d_vals.extend(v)
out = Counter(d_vals)
輸出:
Counter({'apple': 2,
'banana': 2,
'grape': 2,
'cherry': 1,
'tomato': 1,
'kiwi': 1})
然后例如,
print(out['apple']) # 2
uj5u.com熱心網友回復:
d2 = {}
for d_vals in d.values():
for el in d_vals:
d2[el] = d2.get(el, 0) 1
d2["apple"]
# 2
如果你只需要一個計數
sum([x.count("apple") for x in d.values()])
# 2
uj5u.com熱心網友回復:
您必須依靠每個串列,而不是串列串列。
d = {'A': ['apple', 'banana', 'grape'],
'B': ['cherry', 'tomato', 'apple'],
'C': ['grape', 'kiwi', 'banana']
}
# This counts on list of lists - not on each list- your appraoch
print(list(d.values()).count('apple'))
# This counts on each list - Solution
print(sum(l.count('apple') for l in d.values()))
uj5u.com熱心網友回復:
使用collections.Counter和itertools.chain()
from collections import Counter
from itertools import chain
d = { 'A': ['apple', 'banana', 'grape'],
'B': ['cherry', 'tomato', 'apple'],
'C': ['grape', 'kiwi', 'banana']}
cntr = Counter(chain(*d.values()))
print(cntr.get('apple'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/382209.html
上一篇:將串列的索引連接到字串變數中
