index = {
u'when_air': 0,
u'chrono': 1,
u'age_marker': 2,
u'name': 3
}
除了手动设置每个值之外,我怎样才能使这个更漂亮(更清晰)?
像:
index = dict_from_range(
[u'when_air', u'chrono', u'age_marker', u'name'],
range(4)
)
答案 0 :(得分:4)
>>> names = [u'when_air', u'chrono', u'age_marker', u'name']
>>> print(dict(zip(names, range(4))))
{'chrono': 1, 'name': 3, 'age_marker': 2, 'when_air': 0}
zip()
将返回元组列表,其中每个元组是来自names
和range(4)
的 ith 元素。 dict()
知道如何根据该字典创建字典。
请注意,如果将不均匀长度的序列赋予zip()
,则结果将被截断。因此,使用range(len(names))
作为参数可能是明智的,以保证相等的长度。
>>> print(dict(zip(names, range(len(names)))))
{'chrono': 1, 'name': 3, 'age_marker': 2, 'when_air': 0}
答案 1 :(得分:4)
您可以将dict理解与内置函数enumerate
一起使用,以按所需顺序从键构建字典。
示例:
keys = [u'when_air', u'chrono', u'age_marker', u'name']
d = {k: i for i,k in enumerate(keys)}
print d
输出结果为:
{u'age_marker': 2, u'when_air': 0, u'name': 3, u'chrono': 1}
请注意,在Python 3.4中添加了enum
模块。它可以比字典更方便地提供所需的语义。
供参考:
答案 2 :(得分:1)
index = {k:v for k,v in zip(['when_air','chrono','age_marker','name'],range(4))}
答案 3 :(得分:1)
此?
#keys = [u'when_air', u'chrono', u'age_marker', u'name']
from itertools import count
print dict(zip(keys, count()))