我在《思考Python》一书中读到一段代码。此代码在inverse[val].[key]
处卡住,出现错误:
'str' object has no attribute 'append''
因为inverse[val]
包含一个string对象。
这里是输入字典。你知道吗
def invert_dict(d):
inverse = dict()
for key in d:
val = d[key]
if val not in inverse:
inverse[val] = [key]
else:
inverse[val].append(key)
return inverse
输入字典是{'a': 1, 'p': 1, 'r': 2, 't': 1, 'o': 1}
预期的输出是{1: ['a', 'p', 't', 'o'], 2: ['r']}
如何通过修改给定的代码块来实现这一点?你知道吗
试试这个:
使用reduce的单行程序:
输出:
可以使用^{} 创建列表字典。然后在迭代输入字典时附加到字典值。你知道吗
可以通过
dict.items
同时迭代键和值来改进代码,而不是迭代键和手动提取值。另外,你的缩进是不正确的。解决这些问题后:相关问题 更多 >
编程相关推荐