我有辭典的例如詞典:如何統計python中嵌套字典中出現值的次數?
d={'object1':{'time1':['value1','value2'],'time2':['value1','value4']},
'Object2的':{ '時間1':[ 'VALUE1', 'value6'], 'TIME2':[ 'value7', 'value8'] }}
如何迭代字典,使我可以發現value1總共出現3次?
我有辭典的例如詞典:如何統計python中嵌套字典中出現值的次數?
d={'object1':{'time1':['value1','value2'],'time2':['value1','value4']},
'Object2的':{ '時間1':[ '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
爲了獲取的數'value1'在您的counter_dict
中,您只需訪問此密鑰的值即可:
>>> 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
的出現次數。
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
這不是字典的字典。這是單個字典。 – Harsha
哦,你剛剛改變了這個問題! – goodvibration
謝謝!編輯問題@哈沙 – gokyori