2014-06-24 83 views
0

在Python中,我有兩個列表idsgos,它們都具有相同的長度(即相等的行數),但是gos可以有每行的多個元件(即,它是一個列表的列表),而IDS有每行僅1元件在一個新行的字典中爲每個鍵打印多個值,前面是關鍵字

例如:

ids = ['1','2','3'] 
gos = [['a','b','c'],['d', 'e'], ['f']] 

我想在IDS每個ID打印出多次,有是gos列表中的go元素,後跟gos列表中的相應元素之一,並且每次都在新行中。

我希望這澄清了我尋求的輸出:

'1' 'a' 
'1' 'b' 
'1' 'c' 
'2' 'd' 
'2' 'e' 
'3' 'f' 
+0

你有什麼這麼遠嗎? – monkut

回答

1

使用ZIP:

for i,g in zip(ids, gos): 
    for ge in g: 
     print i,ge 

輸出:

1 a 
1 b 
1 c 
2 d 
2 e 
3 f 
0

你可以試試這些簡單的嵌套 for循環:

for i, e1 in enumerate(ids): 
    for e2 in gos[i]: 
     print e1, e2 

輸出:

1 a 
1 b 
1 c 
2 d 
2 e 
3 f 

注:enumerate函數用於保持索引的計數,該索引將用於訪問相應的gos元素。

0

這樣

from itertools import product,imap 
ids = ['1','2','3'] 
gos = [['a','b','c'],['d', 'e'], ['f']] 

for i in imap(product,ids,gos): 
    for j in i: 
     print j[0],j[1] 
0

另一個做這件事的方式的另一種方式..

ids = "1 2 3".split() 
gos = ['a b c'.split(), 'c d'.split(), ['f']] 

import itertools 

ig = [zip([i] * len(g), g) 
     for i, g in zip(ids, gos)] 

for i, g in itertools.chain.from_iterable(ig): 
    print(i, g) 
0

我希望這是一個簡單的方法來做到這一點

for i in range(len(gos)): 
    for k in gos[i]: 
     print ids[i], k 

輸出

1 a 
1 b 
1 c 
2 d 
2 e 
3 f 
相關問題