在python中将数据添加到字典

在python中将数据添加到字典,python,dictionary,Python,Dictionary,这是我的字典: inventory = { 'gold' : 500, 'pouch' : ['flint', 'twine', 'gemstone'], # Assigned a new list to 'pouch' key 'backpack' : ['xylophone','dagger', 'bedroll','bread loaf'] } 我需要在gold的索引中添加50。 我该怎么办?我试过: inventory['gold'].append(50) g

这是我的字典:

inventory = {
    'gold' : 500,
    'pouch' : ['flint', 'twine', 'gemstone'], # Assigned a new list to 'pouch' key
    'backpack' : ['xylophone','dagger', 'bedroll','bread loaf']
}
我需要在
gold
的索引中添加50。 我该怎么办?我试过:

inventory['gold'].append(50)

gold
不是一个列表。它是一个整数,因此使用加法:

这使用增广赋值,对于整数,该赋值等价于:

inventory['gold'] = inventory['gold'] + 50
如果您还需要
gold
作为列表,并且希望以
[500,50]
作为值结束,则必须用列表替换当前值:

inventory['gold'] = [inventory['gold'], 50]
如果您需要随时间添加多个值,并且不知道
gold
是列表还是简单整数,并且无法将原始字典更改为始终使用列表,则可以使用异常处理:

try:
    inventory['gold'].append(50)
except AttributeError:
    # not a list yet
    inventory['gold'] = [inventory['gold'], 50]

但是,如果从始终是列表对象的
gold
开始,维护项目会容易得多。

gold
不是列表。它是一个整数,因此使用加法:

这使用增广赋值,对于整数,该赋值等价于:

inventory['gold'] = inventory['gold'] + 50
如果您还需要
gold
作为列表,并且希望以
[500,50]
作为值结束,则必须用列表替换当前值:

inventory['gold'] = [inventory['gold'], 50]
如果您需要随时间添加多个值,并且不知道
gold
是列表还是简单整数,并且无法将原始字典更改为始终使用列表,则可以使用异常处理:

try:
    inventory['gold'].append(50)
except AttributeError:
    # not a list yet
    inventory['gold'] = [inventory['gold'], 50]

但是,如果您一开始使用的
gold
始终是一个列表对象,那么维护项目就会容易得多。

假设您的意思是希望在gold中添加50。将黄金列入清单:

inventory = {
    'gold' : [500],
    'pouch' : ['flint', 'twine', 'gemstone'], # Assigned a new list to 'pouch' key
    'backpack' : ['xylophone','dagger', 'bedroll','bread loaf']
}

inventory['gold'].append(50)

如果你的意思是添加,使用Martijn的解决方案。

假设你的意思是想在黄金上添加50。将黄金列入清单:

inventory = {
    'gold' : [500],
    'pouch' : ['flint', 'twine', 'gemstone'], # Assigned a new list to 'pouch' key
    'backpack' : ['xylophone','dagger', 'bedroll','bread loaf']
}

inventory['gold'].append(50)

如果您想添加,请使用Martijn的解决方案。

如果您想在键“Platinum”的值上添加60

如果您希望保留500的值,但同时也要保留60的值,则需要包含这两个值的内容,例如列表

你可以用一个列表初始化你的“白金”值,然后再加上500和60

inventory ["Platinum"] = list ()
inventory ["Platinum"].append (500)
inventory ["Platinum"].append (60)
或者可以使用defaultdict使其稍微简单一些

from collections import defaultdict


inventory = defaultdict (list)  # every missing value is now a list.

inventory ["Platinum"].append (500) # add 500 to the list.
inventory ["Platinum"].append (60) # add 60 to the list.
inventory ["pouch"] = ['Flint', 'twine', 'gemstone'] # create a new key with a new value.
inventory['animals'].extend(['Elephant', 'dog','lion']) # extend list to include.
inventory['pouch'].remove('Flint')

如果您想在“白金”键的值上增加60

如果您希望保留500的值,但同时也要保留60的值,则需要包含这两个值的内容,例如列表

你可以用一个列表初始化你的“白金”值,然后再加上500和60

inventory ["Platinum"] = list ()
inventory ["Platinum"].append (500)
inventory ["Platinum"].append (60)
或者可以使用defaultdict使其稍微简单一些

from collections import defaultdict


inventory = defaultdict (list)  # every missing value is now a list.

inventory ["Platinum"].append (500) # add 500 to the list.
inventory ["Platinum"].append (60) # add 60 to the list.
inventory ["pouch"] = ['Flint', 'twine', 'gemstone'] # create a new key with a new value.
inventory['animals'].extend(['Elephant', 'dog','lion']) # extend list to include.
inventory['pouch'].remove('Flint')

投票被否决,因为该问题被编辑为与此答案相匹配,我的答案被嵌入其中,以防op并不意味着添加。我完全赞成一个完整的答案。这就是你现在得到的,但是对这个问题的编辑使它看起来很阴暗否则我不会mind@Scironic当前位置我总是将答案扩展到我想到的所有基础。我不需要咨询你的答案就可以这样做。你也可以自由更新你的答案。就我个人而言,我用投票来反映答案的有用性,而不是被认为是剽窃,这就是标记的意义。我明白,我也这么做。我的意思是,你编辑了这个问题,以更适合你的答案(无论是否有意这样做)。@Scironic:这里的目标是为问题提供好的答案。很抱歉,你觉得有什么可疑的事情发生了,但我可以向你保证,我所有的编辑都是按照我自己的方式进行的。@Scironic:等等,你说编辑问题是为了匹配我的答案?!我以为你在谈论我对自己答案的编辑。我总是整理问题,编辑(拼写、语法、格式、清晰度)。我们鼓励您这样做(有一系列的徽章)。我当然没有编辑它来匹配我的答案。你在哪里看到的?投票被否决了,因为这个问题被编辑成与这个答案相匹配,我的答案被嵌入到这个问题中,以防op不意味着添加。我完全赞成一个完整的答案。这就是你现在得到的,但是对这个问题的编辑使它看起来很阴暗否则我不会mind@Scironic当前位置我总是将答案扩展到我想到的所有基础。我不需要咨询你的答案就可以这样做。你也可以自由更新你的答案。就我个人而言,我用投票来反映答案的有用性,而不是被认为是剽窃,这就是标记的意义。我明白,我也这么做。我的意思是,你编辑了这个问题,以更适合你的答案(无论是否有意这样做)。@Scironic:这里的目标是为问题提供好的答案。很抱歉,你觉得有什么可疑的事情发生了,但我可以向你保证,我所有的编辑都是按照我自己的方式进行的。@Scironic:等等,你说编辑问题是为了匹配我的答案?!我以为你在谈论我对自己答案的编辑。我总是整理问题,编辑(拼写、语法、格式、清晰度)。我们鼓励您这样做(有一系列的徽章)。我当然没有编辑它来匹配我的答案。你在哪里看到的?