web-dev-qa-db-ja.com

Python-dictはリストである値を持つことができますか?

Pythonを使用する場合、dictがリストである値を持つことができる可能性はありますか?

たとえば、次のような辞書(KeyName3の値を参照):

{
keyName1 : value1,
keyName2: value2,
keyName3: {val1, val2, val3}
}

'defaultdict'を使用できることはすでに知っていますが、単一の値が(当然のことながら)リストとして返されます。

私が尋ねる理由は、呼び出し元が(pop[0]リストを指定せずに)リストとしてではなくアイテムとして(dictキー値からのように)単一のキー値を取得できるように、コードはジェネリックでなければならないからです。 -ただし、複数の値をリストとして取得することもできます。

そうでなければ、どんな提案も歓迎されます。

誰かが助けることができればそれは素晴らしいことです。

前もって感謝します、

ポール

*私はPython 2.6を使用していますが、Python 3.0+との上位互換性も必要なスクリプトを記述しています。

12
Paul Kernaghan

はい。 dictの値は、任意の種類のpythonオブジェクトです。キーは、ハッシュ可能なオブジェクト(リストは許可されませんが、タプルは許可されます)にすることができます。

リストを作成するには、[]ではなく{}を使用する必要があります。

{ keyName1 : value1, keyName2: value2, keyName3: [val1, val2, val3] }
27
Wooble

はい、それは可能です:

d = {}
d["list key"] = [1,2,3]
print d

出力:

{'list key': [1, 2, 3]}
6
GreenMatt

間違いなくリストと任意のオブジェクトを値として持つことができますが、リストは変更可能なデータ構造であり、キーは他の用途で変更できないため、辞書はリストをキーとして持つことはできません。

0
cobie