如何计算值在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
。