目前我有一个迭代器,它产生:
(0, 10), (10, 20), (20, 30), (30, 40), (40, 50), (50, 56), (56, None)
我要生产的产品:
[["current": "0", "next":"10", "default": "value"], ["current": "10", "next":"20", "default": "value"]],
到目前为止我所拥有的:
('default', (0, 10)), ('default', (10, 20)), ('default', (20, 30)), ('default', (30, 40)), ('default', (40, 50)), ('default', (50, 56)), ('default', (56, None))
为了从元组列表中生成词典,我可以做哪些更改?你知道吗
下面是我的代码:
start = 0
end = 56
step = 10
part = itertools.islice(range(end), start, end, step)
end = [end]
iterables = itertools.chain(part, end)
items, nexts = itertools.tee(iterables)
# items = [0, 10, 20, 30, 40, 50, 56]
nexts = itertools.chain(itertools.islice(nexts, 1, None), [None])
# next = [10, 20, 30, 40, 50, 56, None]
results = itertools.zip_longest(items, nexts)
# [(0, 10), (10, 20), (20, 30), (30, 40), (40, 50), (50, 56), (56, None)]
static = "default"
result = zip(itertools.repeat(static),results)
print(list(result))
注意,如果可能的话,我只想用itertools
来完成这个任务,我真的不想在内存中保存整个字典列表。你知道吗
从元组序列中,可以执行列表理解(或生成器表达式),如:
测试代码:
结果:
在这种情况下,编写自己的生成器函数可能更具可读性。例如:
输出:
相关问题 更多 >
编程相关推荐