Почему я получаю эту ошибку при использовании Python dict.setdefault? - PullRequest
0 голосов
/ 05 июля 2018
dict.setdefault('Name','').str('Name 1')

Я хочу добавить «Имя» в словарь непосредственно в цикле for, и если имя недоступно, я хочу, чтобы оно было пустой строкой. Можем ли мы получить это с помощью setdefault?

Когда я использую приведенный выше код, я получаю ошибку как -

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

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Вы не можете делать то, что вы хотите сделать, потому что str является неизменным, вам всегда нужно будет создать новую строку и присвоить ее обратно ключу. Вы можете сделать это с помощью list s, потому что list является изменяемым, то есть вы можете изменять список в словаре.

Для str просто используйте dict.get(). Это добавит значение к существующему значению в словаре, если оно существует, или к пустой строке, если это не так, например ::

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

В качестве альтернативы используйте collection.defaultdict, например ::

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

Примечание: не используйте dict в качестве имени переменной, оно скрывает тип питонов dict.

0 голосов
/ 05 июля 2018

Я хочу добавить 'Name' в словарь непосредственно в цикле for и если имя недоступно, я хочу, чтобы оно было пустой строкой

Это можно сделать с помощью setdefault :

dict.setdefault('Name', '')

Примечание: dict - очень плохое имя для переменной: оно затеняет встроенный тип dict.

...