将两个列表压缩成字典并设值为None

2 投票
2 回答
594 浏览
提问于 2025-04-17 20:20

我想知道怎么把两个列表合并在一起,如果某个值超出了范围,就把它设置为None。比如:

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

这样输出会是 {1:'a', 2:'b', 3:'c'},但我需要的是 {1:'a', 2:'b', 3:'c', 4:None, 5:None}

2 个回答

6

itertools模块可以帮你解决这个问题。

http://docs.python.org/2/library/itertools.html#itertools.izip_longest

itertools.izip_longest(*iterables[, fillvalue])

这个函数可以创建一个迭代器,它会把每个可迭代对象(比如列表、元组等)中的元素聚合在一起。如果这些可迭代对象的长度不一样,缺少的值会用你指定的填充值来填补。这个过程会一直进行,直到最长的那个可迭代对象的元素都用完为止。

3

这样怎么样:

b = ['a','b','c'] + [None]*(len(a)-len(b))

或者在创建字典的时候这样做:

dict(zip(a,b +[None]*(len(a)-len(b))))

撰写回答