如何在python中将多个值添加到字典键?[关闭]


80

我想将多个值添加到python字典中的特定键。我怎样才能做到这一点?

a = {}
a["abc"] = 1
a["abc"] = 2

这会将a [“ abc”]的值从1替换为2。

我想要的是a [“ abc”]具有多个值(1和2)。

Answers:


154

将值设为列表,例如

a["abc"] = [1, 2, "bob"]

更新:

有两种方法可以向键添加值,以及在列表尚不存在时创建列表。我将逐步介绍一种这样的方法。

key = "somekey"
a.setdefault(key, [])
a[key].append(1)

结果:

>>> a
{'somekey': [1]}

接下来,尝试:

key = "somekey"
a.setdefault(key, [])
a[key].append(2)

结果:

>>> a
{'somekey': [1, 2]}

的神奇之处setdefault在于,如果未定义该键,则它将初始化该键的值,否则将不执行任何操作。现在,注意setdefault返回键,您可以将它们组合成一行:

a.setdefault("somekey",[]).append("bob")

结果:

>>> a
{'somekey': [1, 2, 'bob']}

您应该查看dict方法,尤其是get()方法,并做一些实验以使自己满意。


8
看一下发布的时间-我们俩都在完全相同的时间给出了相同的答案,直到第二个:)
MattDMo 2013年

我要一一添加。
PythonEnthusiast 2013年

1
就像我为函数提供键和值一样。如果key已经存在,则应将新值附加到key。
PythonEnthusiast

1
您可以检查type(a [“ abc”])==列表。如果不是,则使用该项目作为该列表中的第一个元素创建一个新列表。
octref

2
谢谢,真的很喜欢a.setdefault(“ somekey”,[])。append(“ bob”)
ARH

22

怎么样

a["abc"] = [1, 2]

这将导致:

>>> a
{'abc': [1, 2]}

那是您要找的东西吗?


我要一一添加。像a [“ abc”] = 1和a [“ abc”] =“ def”
PythonEnthusiast 2013年

@ user1162512 a [“ abc”]。append(“ def”)
octref 2013年

如果我不想使用列表怎么办。我还可以附加值吗?例如:我有一个字典a [“ abc”:1]。现在,我想将“ def”添加到“ abc”键。我怎样才能做到这一点?
PythonEnthusiast

2
@ user1162512如果您希望某个键具有多个值,则需要使用列表或其他容器来存储多个值(另一个字典,元组等)。您不能这样做,{"abc": 1, 2}因为dict是一个key:value对,每个键只有一个值。
MattDMo

2
我们是蟒蛇双胞胎:)
总统詹姆斯·K·波尔克2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.