假设我有一个列表:
l = [1, 7, 2, 4, 3, 2, 4, 1, 4, 3]
我如何遍历以列出多个单独的词典?
newl = [{1:7}, {2:4}, {3:2}, {4:1}, {4:3}]
答案 0 :(得分:5)
我的方法是在列表理解中初始化字典,该列表对偶数和奇数元素进行迭代:
l = [1, 7, 2, 4, 3, 2, 4, 1, 4, 3]
newl = [{k: v} for k, v in zip(l[::2], l[1::2])]
# [{1: 7}, {2: 4}, {3: 2}, {4: 1}, {4: 3}]
如果性能很重要,请注意@Netwave的注释:这里创建了两个可以避免的其他列表(请在此处查看其答案)。
答案 1 :(得分:2)
您可以使用此列表理解:
>>> [{l[i]:l[i+1]} for i in range(0,len(l),2)]
[{1: 7}, {2: 4}, {3: 2}, {4: 1}, {4: 3}]
答案 2 :(得分:2)
另一种有效的方法是使用tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"
:
iter
或使用>>> l = [1, 7, 2, 4, 3, 2, 4, 1, 4, 3]
>>> it = iter(l)
>>> [{x:y} for x,y in zip(it, it)]
[{1: 7}, {2: 4}, {3: 2}, {4: 1}, {4: 3}]
进行有效的迭代,而没有额外的内存开销:
itertools.islice