您应该为列表中的偶数个元素编写代码,但是当您有奇数个元素时,索引处的元素
i+1
不存在,因此错误。
你也可以
zip
在同一个迭代器上以成对方式使用连续值,并理解dict:
In [239]: lst = [1, 2, 3, 4, 5, 6]
In [240]: {k: v for k, v in zip(*[iter(l)] * 2)}
Out[240]: {1: 2, 3: 4, 5: 6}
对于奇数个元素,可以使用
itertools.zip_longest
用一个
fillvalue
要填写缺少的最后一个值:
In [241]: lst = [1, 2, 3, 4, 5, 6, 7]
In [242]: {k: v for k, v in itertools.zip_longest(*[iter(l)] * 2, fillvalue=None)}
Out[242]: {1: 2, 3: 4, 5: 6, 7: None}