列表与键和值的字典

jum*_*947 2 python dictionary list

我有一个列表(myarray),看起来像这样,

[u 'item-01', 52, u 'item-02', 22, u 'item-03', 99, u 'item-04', 84]
Run Code Online (Sandbox Code Playgroud)

我正在尝试将其转换为具有键和值的字典.

我试过循环,但没有给我预期的结果,

mydict = {}
for k,v in myarray:
mydict[k] = v
Run Code Online (Sandbox Code Playgroud)

Sha*_*ger 6

简单:使用zip和扩展切片.

mydict = dict(zip(myarray[::2], myarray[1::2]))
Run Code Online (Sandbox Code Playgroud)

第一个扩展切片生成list所有偶数索引中的一个,其次是奇数索引,将zip它们组合成tuples,dict构造函数可以采用可迭代的配对值并使用它们作为键/值对进行初始化.

注意:Padraig的使用解决方案iter可以更快地工作(并处理非序列迭代),虽然它不太直观(并不像书面那样简洁).当然,它可以通过使用list乘法复制引用的行为而变得更加直观(参见序列操作表中的注释2;在itertools grouper配方中找到另一个用途的示例):

mydict = dict(zip(*[iter(myarray)]*2))
Run Code Online (Sandbox Code Playgroud)