将默认字典更改为嵌套字典
Change default dict into nested dictionary
我有一个字典(如下所示),值是默认字典,内部值是一个列表。我试图将这本字典变成另一个具有相同更高级别键的字典和一个包含相同内部键和列表中“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'>, {})}
我正在使用下面的代码尝试执行此操作,但出现错误 "TypeError: list indices must be integers, not str"。
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
您可以使用以下嵌套 dict comprehension:
{
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': {}}
k, v
是外层dict
的键值对,k_, v_
是每个内层defaultdict
的键值对。 sum
是一个方便的实用程序,用于通过 sum(x==4 for x in v_).
计算每个最内层列表的 4
的出现次数
我有一个字典(如下所示),值是默认字典,内部值是一个列表。我试图将这本字典变成另一个具有相同更高级别键的字典和一个包含相同内部键和列表中“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'>, {})}
我正在使用下面的代码尝试执行此操作,但出现错误 "TypeError: list indices must be integers, not str"。
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
您可以使用以下嵌套 dict comprehension:
{
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': {}}
k, v
是外层dict
的键值对,k_, v_
是每个内层defaultdict
的键值对。 sum
是一个方便的实用程序,用于通过 sum(x==4 for x in v_).
4
的出现次数