为什么在使用Python dict.setdefault时出现此错误?

时间:2018-07-05 20:00:22

标签: python python-3.x dictionary setdefault

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

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

使用上面的代码时,出现错误-

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

2 个答案:

答案 0 :(得分:1)

由于str是不可变的,因此您无法做您想做的事情,您将始终需要构造一个新字符串并将其分配回键。您可以使用list来执行此操作,因为list是可变的,即您可以在字典中对列表进行变异。

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

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

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

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

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

答案 1 :(得分:0)

  

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

只需setdefault即可完成此操作:

dict.setdefault('Name', '')

注意:dict是一个非常不好的变量名:它掩盖了内置类型dict