假设我在Python中有一个列表a,它的条目很方便地映射到一个字典。每个偶数元素表示字典的键,接下来的奇数元素是值

例如,

a = ['hello','world','1','2']

我想把它转换成一个字典b,其中

b['hello'] = 'world'
b['1'] = '2'

在语法上最干净的方法是什么?


当前回答

也许不是最邪恶的,但是

>>> b = {}
>>> for i in range(0, len(a), 2):
        b[a[i]] = a[i+1]

其他回答

{x: a[a.index(x)+1] for x in a if a.index(x) % 2 ==0}

result : {'hello': 'world', '1': '2'}

也许不是最邪恶的,但是

>>> b = {}
>>> for i in range(0, len(a), 2):
        b[a[i]] = a[i+1]

我觉得很酷的是,如果你的清单只有两项:

ls = ['a', 'b']
dict([ls])
>>> {'a':'b'}

记住,dict接受任何包含可迭代对象的可迭代对象,其中可迭代对象中的每一项本身必须是恰好包含两个对象的可迭代对象。

你也可以这样做(字符串到列表转换,然后转换到字典)

    string_list = """
    Hello World
    Goodbye Night
    Great Day
    Final Sunset
    """.split()

    string_list = dict(zip(string_list[::2],string_list[1::2]))

    print string_list

我还非常希望有一个用于此转换的一行程序,因为这样的列表是Perl中哈希的默认初始化式。

在这篇文章中给出了非常全面的答案

Python转换列表到字典

我的一个我是Python新手),使用Python 2.7生成器表达式,将是:

dict([我],[i + 1])我的范围(0,len (a) - 1, 2))