从嵌套列表构建元组

4

你好,请问如何将嵌套列表中的元组附加到字典列表中,以形成以下格式的新元组列表:

nde = [{'length': 0.35, 'modes': 'cw', 'type': '99', 'lanes': 9},
           {'length': 0.48, 'modes': 'cw', 'type': '99', 'lanes': 9},
           {'length': 0.88, 'modes': 'cw', 'type': '99', 'lanes': 9}]

dge = [[(1001, 7005),(3275, 8925)], [(1598,6009),(1001,14007)]]

如何将它们附加在一起以得到以下格式的结果:
rslt = [(1001, 7005, {'length': 0.35, 'modes': 'cw', 'type': '99', 'lanes': 9}... ]

我尝试了这个:
[(k1[0], k1[1], k2) for k1, k2 in zip(dge, nde)]

但它并没有给出所期望的结果。谢谢。

2
你在 nde 中有三个字典,但在 dge 中却有两个列表/四个元组。这看起来很奇怪。 - DSM
2个回答

4

您需要先将列表中的嵌套列表展开,然后再使用 zip 函数:

>>> from itertools import chain
>>> [(k1[0], k1[1], k2) for k1, k2 in zip(chain.from_iterable(dge), nde)]
[(1001, 7005, {'lanes': 9, 'length': 0.35, 'type': '99', 'modes': 'cw'}),
 (3275, 8925, {'lanes': 9, 'length': 0.48, 'type': '99', 'modes': 'cw'}),
 (1598, 6009, {'lanes': 9, 'length': 0.88, 'type': '99', 'modes': 'cw'})]

Docs: itertools.chain.from_iterable


3
您有嵌套列表,因此在进行压缩之前应该将它们展开:
import itertools
[(k1[0], k1[1], k2) for k1, k2 in zip(itertools.chain(*dge), nde)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接