如何在Python 3中映射两个不同长度的列表?

Joh*_*ohn 2 python dictionary list python-3.x

我有两个清单。

说,

letterList = [(1, 'a') (1, 'b')]
bigramList = [(2, 'ab'), (2, 'cd'), (2, 'ef')]
Run Code Online (Sandbox Code Playgroud)

我想将两个列表映射在一起以获得以下输出:

print(myMap)
# [ ((1, a), (2, ab)), ((1, b), (2, cd)), (None, (2, ef)) ]
Run Code Online (Sandbox Code Playgroud)

我得到这样的输出:<map object at 0x7f639461efd0>

我知道我的问题出在这一行:

myMap = (map(None, letterList, biGramList))
Run Code Online (Sandbox Code Playgroud)

我认为这是因为 Python 3。只是不太确定如何修复它并获得我想要的输出。

o11*_*11c 5

使用itertools.zip_longest()

>>> letterList = [(1, 'a'), (1, 'b')]
>>> bigramList = [(2, 'ab'), (2, 'cd'), (2, 'ef')]
>>> list(itertools.zip_longest(letterList, bigramList))
[((1, 'a'), (2, 'ab')), ((1, 'b'), (2, 'cd')), (None, (2, 'ef'))]
Run Code Online (Sandbox Code Playgroud)

请注意,您不一定需要将其强制到列表中才能使用它,这只是为了打印方便。

  • @o11c 参加编程课程的第一定律:不要忽视教授施加的限制。 (5认同)