在新行上的字典中为每个键打印多个值,前面是键

时间:2014-06-24 05:58:21

标签: python list

在Python中,我有两个列表idsgos,两者都有相同的长度(即相等的行数),但gos每行可以有多个元素(即,它是一个列表列表)而ids每行只有1个元素

例如:

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

我想打印出id中的每个id多次,因为gos列表中有go-elements后跟gos列表中的一个相应元素,每次都在新行上。

我希望这能澄清我正在寻求的输出:

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

5 个答案:

答案 0 :(得分: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

答案 1 :(得分: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的相应元素。

答案 2 :(得分: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]

答案 3 :(得分: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)

答案 4 :(得分: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
相关问题