我有一本嵌套词典
dict_features = {'agitacia/6.txt': {'samoprezentacia': 0, 'oskorblenie': 1},
'agitacia/21.txt': {'samoprezentacia': 0, 'oskorblenie': 0}}
我试图输出一个新的字典features_agit_sum
,它由前一个字典的一个键和一个“更深”字典的值的总和组成。所以我需要求和0+1,这是int类型。输出应为:
下面是几种不同错误的尝试;不要正确迭代:
features_agit_sum = {}
def vector_agit_sum(dict_features):
for key, value in dict_features:
features_agit_sum[key] = sum(dict_features.items()[key])
print (features_agit_sum)
return features_agit_sum
ValueError: too many values to unpack (expected 2) dict_features.items()[key] - try to access deeper dict
features_agit_sum = {}
def vector_agit_sum(dict_features):
for key in dict_features:
for item, value in dict_features.items():
features_agit_sum[key] = sum([item])
print (features_agit_sum)
return features_agit_sum
TypeError: unsupported operand type(s) for +: 'int' and 'str' - Why, it's integers!
features_agit_sum = {}
def vector_agit_sum(dict_features):
files = dict_features.keys()
for key, value in dict_features.items():
features_agit_sum[files] = sum(dict_features.items()[key])
print (features_agit_sum)
return features_agit_sum
TypeError: 'dict_items' object is not subscriptable
尝试一下,使用字典理解(这在python2.7+和3.x中都适用):
如果使用Python 2.7+,建议显式使用迭代器,在Python 3.x中,前面的代码片段已经使用了迭代器:
^{pr2}$无论哪种方式,它都会返回预期结果:
使用
isinstance
检查类型并采取正确的操作。如果是int
,则将其添加到运行总数中。否则,递归以获得该字典中包含的总和。在使用听写理解:
如果您使用的是python3,请删除}。在
iter
前缀,因此使用.values()
和{演示:
^{pr2}$相关问题 更多 >
编程相关推荐