Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是Pythonic方式使用列表中的元素作为字典中的键?_Python_List_Dictionary - Fatal编程技术网

什么是Pythonic方式使用列表中的元素作为字典中的键?

什么是Pythonic方式使用列表中的元素作为字典中的键?,python,list,dictionary,Python,List,Dictionary,鉴于清单: keys = ['Orange','Blue','Green'] 还有字典 colors = {} 使用键的元素作为颜色的键,最符合Python风格的方式是什么?我目前正在做以下工作,但我想知道是否有比这更好的Python使用方法 for key in keys: colors[key] = [] 编辑:最初的问题是“使用键作为颜色键的最具Python风格的方式”,但随后的代码片段表明,实际需要的是使用其元素的方式。如果顺序很重要,请使用元组 In [113]: key

鉴于清单:

keys = ['Orange','Blue','Green']
还有字典

colors = {}
使用
的元素作为
颜色
的键,最符合Python风格的方式是什么?我目前正在做以下工作,但我想知道是否有比这更好的Python使用方法

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

编辑:最初的问题是“使用<代码>键作为<代码>颜色键的最具Python风格的方式”,但随后的代码片段表明,实际需要的是使用其元素的方式。

如果顺序很重要,请使用
元组

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
本质上为您提供了一个可散列的
,该集不可修改,但具有
的所有优点(O(1)查找等)

如果希望
键中的每个元素都是
颜色中的键

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

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

您可以使用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': []}

如上所述的听写理解是一条路要走。为了显示备选方案,如果要使用列表进行实例化,还可以将
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'>
[1]中的
:从集合导入defaultdict
在[2]中:键=['橙色','蓝色','绿色']
在[3]中:colors=defaultdict.fromkeys(键,列表)
在[4]中:颜色[‘橙色’]
出[4]:

s/order/order and\/或存在重复项/g
看起来他想使用列表中的每个元素作为键,而如果他想使用列表本身作为键,这个答案将适用。谢谢你的回答-它教会了我一些新的和有趣的东西。
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'>