2014-03-31 45 views
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

回答

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'})] 

文檔:itertools.chain.from_iterable

3

你嵌套列表,所以你應該資平之前,展平,然後:

import itertools 
[(k1[0], k1[1], k2) for k1, k2 in zip(itertools.chain(*dge), nde)]