3

リストを考えると:

keys = ['Orange','Blue','Green']

と辞書

colors = {}

keys(の要素)をキーとして使用する最もPython的な方法は何colorsですか?私は現在次のことを行っていますが、これよりもPythonを使用するより良い方法があるかどうか知りたいです。

for key in keys:
    colors[key] = []

編集:質問は元々「keysキーとして使用する最もPythonの方法」を求めていましcolorsたが、後続のコードスニペットは、実際に必要なのはその要素を使用する方法であることを示しています。

4

3 に答える 3

7

dict内包表記を使用できます。

In [1]: keys = ['Orange', 'Blue', 'Green']

In [2]: colors={key: [] for key in keys}

In [3]: colors
Out[3]: {'Blue': [], 'Green': [], 'Orange': []}

Python 2.6の場合:

In [4]: colors = dict((key, []) for key in keys)

In [5]: colors
Out[5]: {'Blue': [], 'Green': [], 'Orange': []}
于 2012-11-20T16:22:57.453 に答える
6

順序が重要な場合は、を使用してtupleください。

In [113]: keys = ['Orange','Blue','Green']

In [114]: colors = {}

In [115]: colors[tuple(keys)] = 0

In [116]: colors
Out[116]: {('Orange', 'Blue', 'Green'): 0}

順序が重要でない場合は、を使用してfrozensetください。はfrozenset基本的にハッシュset可能であり、変更することはできませんが、set(O(1)ルックアップなど)のすべての利点があります。

In [117]: colors = {}

In [118]: colors[frozenset(keys)] = 0

In [119]: colors
Out[119]: {frozenset(['Orange', 'Blue', 'Green']): 0}

の各要素をキーインにkeysする場合colors

In [120]: colors = {k:[] for k in keys}

In [121]: colors
Out[121]: {'Blue': [], 'Green': [], 'Orange': []}
于 2012-11-20T16:21:52.183 に答える
6

上記のような口述の理解は行く方法です。代替案を表示するために、リストを使用してインスタンス化する場合はdefaultdict、と組み合わせて使用​​することもできます。fromkeys

In [1]: from collections import defaultdict

In [2]: keys = ['Orange','Blue','Green']

In [3]: colors = defaultdict.fromkeys(keys, list)

In [4]: colors['Orange']
Out[4]: <type 'list'>
于 2012-11-20T16:23:45.950 に答える