Pythonで辞書キーに複数の値を追加するにはどうすればよいですか?[閉まっている]


84

Python辞書の特定のキーに複数の値を追加したい。どうやってやるの?

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

これにより、a ["abc"]の値が1から2に置き換えられます。

代わりに、a ["abc"]に複数の値(1と2の両方)を持たせたいのです。

回答:


161

値をリストにします。例:

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

更新:

キーに値を追加する方法と、リストがまだない場合はリストを作成する方法はいくつかあります。そのような方法の1つを少しずつ説明します。

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そのキーの値を初期化し、それ以外の場合は何もしないことです。ここで、キーが返されることに注意して、これらを1行にまとめることができます。setdefault

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

結果:

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

dictメソッド、特にメソッドを確認し、get()これに慣れるためにいくつかの実験を行う必要があります。


8
投稿された時間を見てください-私たちは両方ともまったく同時に、秒まで同じ答えを出しました:)
MattDMo 2013

一つずつ追加したいです。
PythonEnthusiast 2013

1
私が関数にキーと値を提供するように。キーがすでに存在する場合は、新しい値をキーに追加する必要があります。
PythonEnthusiast 2013

1
type(a ["abc"])==リストかどうかを確認できます。そうでない場合は、そのアイテムをそのリストの最初の要素として使用して、新しいリストを作成します。
octref 2013

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]を口述しました。ここで、「abc」キーに「def」を追加します。どうやってやるの?
PythonEnthusiast 2013

2
@ user1162512特定のキーに複数の値を設定する場合は、複数の値(別のdict、タプルなど)にリストまたはその他のコンテナーを使用する必要があります。{"abc": 1, 2}dictはキーと値のペアであり、キーごとに1つの値しかないため、これを行うことはできません。
MattDMo 2013

2
私たちはパイソンの双子です:)
ジェームズK.ポーク大統領
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.