将两个不相等的列表压缩到字典中。如果key没有值,则给none。忽略没有键的值

有两个不同长度的列表。第一个包含键,第二个包含值。编写一个函数,根据这些键和值创建一个字典。如果键没有足够的值,字典应该有值None。没有足够键的值应该被忽略。

a = ['a', 'b', 'c']
b = [1, 2, 3, 4, 5] 
dict(zip(a, b))

我需要这个:

{'a':'1', 'b':'2', 'c':'4'}

为了

a = ['a', 'b', 'c']
b = [1, 2]
dict(zip(a, b))

我需要这个:

{'a':'1', 'b':'2', 'c':'None'}

回答

构建一个迭代器b并迭代从a获取下一个元素b,默认为None,例如

it = iter(b)
{k: next(it, None) for k in a}


回答

itertools.zip_longest 是你需要的:

from itertools import zip_longest

dict(zip_longest(a,b) if len(a)>len(b) else zip(a,b))

if部分是避免None作为键。


以上是将两个不相等的列表压缩到字典中。如果key没有值,则给none。忽略没有键的值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>