将两个列表压缩成字典并设值为None
我想知道怎么把两个列表合并在一起,如果某个值超出了范围,就把它设置为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))))