簡體   English   中英

如何計算一個值在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.Counteritertools.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_valvalue1的出現次數。

嘗試使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM