Python字典:使用.append更新

Python字典:使用.append更新,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我正在使用python 3.7.4。我有以下嵌套字典: dict = {'name': {'first': 'Alan', 'surname': 'Dunn'}, 'jobs': {'nurse', 'consultant'}, 'age': 76} print(rec) 我想使用.append添加新的职务说明,如下所示: dict['jobs'].append('doctor') 但我得到了错误信息: “set”对象没有属性“append”。为什么会这样?我读

我正在使用python 3.7.4。我有以下嵌套字典:

dict = {'name': {'first': 'Alan', 'surname': 'Dunn'},
       'jobs': {'nurse', 'consultant'},
       'age': 76}

print(rec)
我想使用.append添加新的职务说明,如下所示:

dict['jobs'].append('doctor')
但我得到了错误信息:

“set”对象没有属性“append”
。为什么会这样?我读过一些建议使用
.update
的指南,但我只是想知道为什么我不能使用
.append
。也许是Python版本


通常认为最好的方法是什么?

字典是键、值对的集合。这些值可以是任何类型。这里,键
作业
的值属于
set
类型。如果它的类型是
list
,那么,是的,您可以使用
.append
方法。但遗憾的是,你不能这么做。您可以
。将
添加到集合中,但如果您想要一个可以索引的数据结构(集合是可散列对象的集合-没有顺序的概念,而列表中有顺序),则这可能不是您想要的

这些例子应该能够理解列表和集合的核心思想:

>>> l = [1, 2, 3]
>>> l.append(4)
>>> l
[1, 2, 3, 4]
>>> l[3]
4
>>> s = {1, 2, 3}
>>> s.add(4)
>>> s.add('hello')
>>> s
{1, 2, 3, 4, 'hello'}
>>> s.add(-100)
>>> s
{1, 2, 3, 4, -100, 'hello'}
>>> -100 in s
True

这里的答案在于您的错误消息

“set”对象没有属性“append”

jobs
处的值不是
列表
而是
集合
。这意味着您需要使用
add
方法,而不是使用
append
方法

dict={'name':{'first':'Alan','姓氏':'Dunn'},
‘工作’:{‘护士’、‘顾问’},
“年龄”:76}
dict['jobs'].添加('doctor')
dict['jobs'] {“护士”、“顾问”、“医生”} append()函数不是字典的属性。它是一个列表,用于向列表中添加新元素。因此,建议您使用.add()函数在字典中添加新元素,如下所示:

dict['jobs'].add('doctor')

因为set对象在任何版本的Python中都没有这种方法。列表有,集合有。添加。将字典包括在内,使问题过于复杂。问题归结为“为什么
{'nurse','consultant'}.append('something')
给我一个
AttributeError
”@JoeIddon,因为它被反复询问,一般来说(foo没有属性栏),特别是(set,append)。Python文档(或help、dir等)告诉您集合的属性是什么,因此您不必担心append就是其中之一。除了OP之外,这对任何人都没有价值,只是对他们的价值微乎其微(可以说,他们会从研究和弄明白它中受益更多)。它符合2/3的否决票标准和各种接近的理由。@jonrsharpe如果它被反复询问,为什么不找一个合适的副本呢?@RoadRunner当然可以