Python怎样将列表list转换为字典dictionary?

Code提问:

Python中的list可以用来创建字典吗?例如,通过迭代键和值对:

mydict = {(k,v) for (k,v) in [1, 2, 3, 4]}  # doesn't work

这样肯定是行不通的,那么应该怎么实现呢?

Code回答:

在Python 2.6及更早版本中,dict构造函数可以接收一个键/值对的迭代:

d = dict((key, value) for (key, value) in iterable)

从Python 2.7和3开始,您可以直接使用dict comprehension syntax

d = {key: value for (key, value) in iterable}

当然,只要每个元素都是两个元素的迭代本身就可以以任何方式使用iterable(元组和列表,或者字符串,生成器等等,但是长度必须是2),例如iterable可以为list:[[1, 1], [2, 4], [3, 8], [4, 16]],或者 [‘aA’, ‘mM’, ‘yY’]

下面是两个更复杂一点的例子:

d = {value: foo(value) for value in sequence if bar(value)}

def key_value_gen(k):
   yield chr(k+65)
   yield chr((k+13)%26+65)
d = dict(map(key_value_gen, range(26)))

By Code问答

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 23 = 31