![](/img/trans.png)
[英]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.