Python字典:使用.append更新
我正在使用python 3.7.4。我有以下嵌套字典: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”。为什么会这样?我读
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当然可以