swa*_*eck 3 python dictionary list
给出清单:
keys = ['Orange','Blue','Green']
Run Code Online (Sandbox Code Playgroud)
和字典
colors = {}
Run Code Online (Sandbox Code Playgroud)
什么是最常用的Pythonic方法(元素)keys作为键colors?我目前正在做以下事情,但想知道是否有比这更好的使用Python的方法.
for key in keys:
colors[key] = []
Run Code Online (Sandbox Code Playgroud)
编辑:这个问题最初要求"使用最多的Pythonic方式keys作为键colors",但随后的代码片段表明实际需要的是一种使用其元素的方法.
你可以使用dict理解:
In [1]: keys = ['Orange', 'Blue', 'Green']
In [2]: colors={key: [] for key in keys}
In [3]: colors
Out[3]: {'Blue': [], 'Green': [], 'Orange': []}
Run Code Online (Sandbox Code Playgroud)
对于python 2.6:
In [4]: colors = dict((key, []) for key in keys)
In [5]: colors
Out[5]: {'Blue': [], 'Green': [], 'Orange': []}
Run Code Online (Sandbox Code Playgroud)
如果订单很重要,请使用a 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}
Run Code Online (Sandbox Code Playgroud)
如果订单无关紧要,请使用frozenset.A frozenset本质上为您提供了一个可清除set,无法修改但具有set(O(1)查找等)的所有优点
In [117]: colors = {}
In [118]: colors[frozenset(keys)] = 0
In [119]: colors
Out[119]: {frozenset(['Orange', 'Blue', 'Green']): 0}
Run Code Online (Sandbox Code Playgroud)
如果您希望每个元素keys成为一个键colors:
In [120]: colors = {k:[] for k in keys}
In [121]: colors
Out[121]: {'Blue': [], 'Green': [], 'Orange': []}
Run Code Online (Sandbox Code Playgroud)
如上所述的Dict理解是要走的路.为了显示替代方法,如果要使用列表进行实例化,还可以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'>
Run Code Online (Sandbox Code Playgroud)