Python 将默认dict更改为嵌套字典

Python 将默认dict更改为嵌套字典,python,dictionary,defaultdict,Python,Dictionary,Defaultdict,我有一个字典(如下所示),值是默认字典,内部值是一个列表。我试图将此字典转换为另一个具有相同更高级别键的字典,以及包含相同内部键和列表中“4”值总和的嵌套字典 例如,第一个条目的预期输出是,{'google':{'dog':1,'cat':2}} {'google': defaultdict(<type 'list'>, {'dog': [4, 0], 'cat': [4, 4, 0]}), 'ibm': defaultdict(<type 'list'>, {'dog'

我有一个字典(如下所示),值是默认字典,内部值是一个列表。我试图将此字典转换为另一个具有相同更高级别键的字典,以及包含相同内部键和列表中“4”值总和的嵌套字典

例如,第一个条目的预期输出是,{'google':{'dog':1,'cat':2}}

{'google': defaultdict(<type 'list'>, {'dog': [4, 0], 'cat': [4, 4, 0]}), 'ibm': defaultdict(<type 'list'>, {'dog': [4], 'bird': [0]}), 'kaspersky': defaultdict(<type 'list'>, {}), 'amazon': defaultdict(<type 'list'>, {}), 'facebook': defaultdict(<type 'list'>, {}), 'sony': defaultdict(<type 'list'>, {}), 'microsoft': defaultdict(<type 'list'>, {}), 'apple': defaultdict(<type 'list'>, {})}

您可以使用以下嵌套方式:


k,v
是外部
dict
的键值对,
k,v
是每个内部
defaultdict
的键值对。是一种方便的工具,可通过
sum(x==4表示v_中的x)计算每个最内层列表中出现的
4
您可以使用以下嵌套方法:


k,v
是外部
dict
的键值对,
k,v
是每个内部
defaultdict
的键值对。是一种方便的工具,可通过
总和(x==4,x在v_中)计算每个最内层列表中出现的
4
和列表中的“4”值之和。
您是指此类值的计数吗?
和列表中的“4”值之和。
您是指此类值的计数吗?目前还显示了相等的值字典中的“0”(例如bird:0)。它只能显示等于“4”的值之和吗?@dmnte您的意思是,您只希望内部dict中的键实际包含任何4个?我的意思是在诸如“ibm”:defaultdict(,{'dog':[4],'bird':[0]})”之类的情况下,输出记录“'ibm':{'dog':1,'bird':0}”“。这是正确的,因为它的值为零,但在本例中是否可能不将其添加到字典中?因此,如果存在4,则只加4之和,否则不加4。目前,字典中还显示等于“0”的值(例如bird:0)。它只能显示等于“4”的值之和吗?@dmnte您的意思是,您只需要内部dict中实际包含任何4的键吗?我的意思是在诸如“ibm”:defaultdict(,{'dog':[4],'bird':[0]})”之类的情况下,输出记录“'ibm':{'dog':1,'bird':0}”。这是正确的,因为它的值为零,但在本例中,是否可能不将它添加到字典中?因此,如果存在一个4,则只加上4的和,否则不加
def swords_neg(dictionary):
    for key,value in dictionary.iteritems():
        company_sent_dict_three[key] = []
        for i,j in dict(value).iteritems():
            for sent in j:
                company_sent_dict_three[key][i] += sent

    print company_sent_dict_three
{
    k: {k_: sum(x==4 for x in v_) for k_, v_ in v.items()} 
    for k, v in dictionary.items()
}
# {'google': {'dog': 1, 'cat': 2}, 
#  'ibm': {'dog': 1, 'bird': 0}, 
#  'kaspersky': {}, 
#  'amazon': {}, 
#  'facebook': {}, 
#  'sony': {}, 
#  'microsoft': {}, 
#  'apple': {}}