[英]How to count the number of times a string appears in a dictionary value in Python?
[英]How to count number of times a value appears in nested dictionary in python?
我有一個字典字典,例如:
d={'object1':{'time1':['value1','value2'],'time2':['value1','value4']},
'object2':{'time1':['value1','value6'],'time2':['value7','value8']}}
如何遍歷字典,以便發現value1總共出現3次?
好吧,棘手的方法是:
print(str(d).count('value1'))
但您總是可以做一個嵌套循環。
您可以像這樣遍歷值和計數:
n = 0
for list_data in d.values():
if 'value1' in list_data:
n = n + 1
print(n)
您可以結合使用collections.Counter
和itertools.chain
實現以下目的:
>>> from itertools import chain
>>> from collections import Counter
>>> d={'time1':['value1','value2'],'time2':['value1','value4'],'time3':['value1','value5']}
>>> counter_dict = Counter(chain(*d.values()))
# ^ dict holding the count of each value
為了在您的counter_dict
獲取'value1'的計數,您只需按以下方式訪問此鍵的值:
>>> counter_dict['value1']
3
這可能不是最優雅的解決方案,但它可解決您的嵌套字典問題:
lst = d.values()
sub_val = [temp.values() for temp in lst]
d_val = [item for sublist in sub_val for item in sublist]
d_val = [item for sublist in d_val for item in sublist]
count = d_val.count('value1')
lst
是嵌套字典的列表。 sub_val
為每個嵌套字典創建一個嵌套值列表。 這將導致一個雙嵌套列表的列表,因此d_val
平出現兩次。 最后, count
返回扁平化列表d_val
中value1
的出現次數。
嘗試使用list.count(x) :
d={'object1':{'time1':['value1','value1','value2'],'time2':['value1','value4']},'object2':{'time1':['value1','value6'],'time2':['value7','value8']}}
cnt =[item for l in [v2 for v1 in d.values() for v2 in v1.values()] for item in l].count('value1')
print(cnt) # print 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.