如何计算值在python的嵌套字典中出现的次数?

如何计算值在python的嵌套字典中出现的次数?,python,dictionary,Python,Dictionary,我有一本字典,例如: d={'object1':{'time1':['value1','value2'],'time2':['value1','value4']}, 'object2':{'time1':['value1','value6'],'time2':['value7','value8']} 我如何迭代字典,以便找到value1总共出现3次 棘手的方法是: print(str(d).count('value1')) 但是你总是可以做一个嵌套循环。好吧,棘手的方法是: print(st

我有一本字典,例如:

d={'object1':{'time1':['value1','value2'],'time2':['value1','value4']},
'object2':{'time1':['value1','value6'],'time2':['value7','value8']}


我如何迭代字典,以便找到value1总共出现3次

棘手的方法是:

print(str(d).count('value1'))

但是你总是可以做一个嵌套循环。

好吧,棘手的方法是:

print(str(d).count('value1'))

但您始终可以执行嵌套循环。

您可以像这样迭代值和计数:

n = 0

for list_data in d.values():
    if 'value1' in list_data:
        n = n + 1

print(n)

您可以像这样迭代值和计数:

n = 0

for list_data in d.values():
    if 'value1' in list_data:
        n = n + 1

print(n)

您可以使用和的组合来实现以下目的:

>>> 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['value1']
3

您可以使用和的组合来实现以下目的:

>>> 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['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
为每个嵌套字典创建值的嵌套列表。这会产生一个双嵌套列表,因此展平显示两次。最后,
count
返回展开列表中
value1
的出现次数
d_val

这可能不是最优雅的解决方案,但它适用于嵌套字典问题:

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
为每个嵌套字典创建值的嵌套列表。这会产生一个双嵌套列表,因此展平显示两次。最后,
count
返回展开列表中
value1
的出现次数

尝试:


这不是字典中的字典。这是一本字典。哦,你刚才改了问题!!谢谢编辑了问题@HarshaWhat(如果它显示为键)。这也算吗?如果是,那么您可以使用
打印len(str(d).split('value1'))-1
。这不是字典的字典。这是一本字典。哦,你刚才改了问题!!谢谢编辑了问题@HarshaWhat(如果它显示为键)。这也算吗?如果是,则可以使用
打印len(str(d).split('value1'))-1