Pythonic方法将字符串列表转换为字典,奇数索引字符串作为键,偶数索引字符串作为值?

Ken*_*ker 8 python list-comprehension

我有一个从某处解析的字符串列表,格式如下:

[key1, value1, key2, value2, key3, value3, ...]
Run Code Online (Sandbox Code Playgroud)

我想基于这个列表创建一个字典,如下所示:

{key1:value1, key2:value2, key3:value3, ...}
Run Code Online (Sandbox Code Playgroud)

for具有索引偏移的普通循环可能会成功,但我想知道是否有Pythonic方法可以做到这一点.列表理解似乎很有趣,但我似乎无法找到如何将它们应用于这个特定问题.

有任何想法吗?

pav*_*kha 13

你可以试试:

dict(zip(l[::2], l[1::2]))
Run Code Online (Sandbox Code Playgroud)

说明:我们将列表拆分为两个列表,一个是偶数,一个是奇数元素,从第一个或第二个元素(即l[::2]l[1::2])开始,从两个步骤中取出它们.然后我们zip将两个列表中的内置函数用于一个对列表.最后,我们调用dict从这些键值对创建字典.

这是~4n时间和~4n空间,包括最后的字典.它可能比一个循环更快,不过,自从zip,dict和切片运营商都写在C.


Tri*_*ych 5

显示我最喜欢的python成语的好机会:

>>> S = [1,2,3,4,5,6]
>>> dict(zip(*[iter(S)]*2))
{1: 2, 3: 4, 5: 6}
Run Code Online (Sandbox Code Playgroud)

这个棘手的行传递两个参数,zip()其中每个参数 S上的迭代器相同,zip()创建了2项元组,每次都从zip上拉过迭代器.dict()然后将这些元组转换为字典.

推断:

S = [1,2,3,4,5,6]

I = iter(S)
dict(zip(I,I))
Run Code Online (Sandbox Code Playgroud)