为什么我在使用 Python dict.setdefault 时收到此错误?


dict.setdefault('Name','').str('Name 1')

我想直接在 for 循环中将"Name"附加到字典中,如果名称不可用,我希望它是一个空字符串。我们可以使用 setdefault 来获得这个吗?

当我使用上面的代码时,我得到的错误是 -

AttributeError: 'str' object has no attribute 'str'

你不能做你想做的事情,因为str是不可变的,你将始终需要构造一个新字符串并将其赋回键。您可以使用lists 执行此操作,因为list是可变的,即您可以更改字典中的列表。

对于str,只需使用dict.get().如果存在,这会将值附加到字典中的现有值上,如果不存在,则会附加到空字符串上,例如:

d['Name'] = d.get('Name', '') + 'Name 1'

或者,使用collection.defaultdict,例如:

d = defaultdict(str)
d['Name'] += 'Name 1'

注意:不要使用dict作为变量名称,它会隐藏 pythondict类型。

我想直接在 for 循环中将"Name"附加到字典中,并且 如果名称不可用,我希望它是一个空字符串

这可以通过设置默认值来完成:

dict.setdefault('Name', '')

注意:dict对于变量来说是一个非常糟糕的名称:它隐藏了内置类型dict

最新更新