从2列表生成字典,如果值为None,则必须为'key:'None''

时间:2017-02-17 18:41:47

标签: python

我从2列表生成字典第一个列表是键,第二个是值,如果字典中的值是None,我必须向键写“无”。列表长度可以不同。

def all_list(l1, l2):
    d = {}
    for k, v in zip(l1, l2):
        if v in d is None:
            d[k] = 'none'
        d[k] = v    

    return d




r1 = ['1',2,3,5,6,7]
r2 = ('andrey','kapar','isa','murat')



print all_list(r1, r2)
  1. 打印{'1': 'andrey', 2: 'kapar', 3: 'isa', 5: 'murat'}
  2. 我想打印{'1': 'andrey', 2: 'kapar', 3: 'isa', 5: 'murat', 6:'None', 7: 'None'}

3 个答案:

答案 0 :(得分:1)

检查zip是如何工作的:

>>> r1 = ['1',2,3,5,6,7]
>>> r2 = ('andrey','kapar','isa','murat')
>>> zip(r1,r2)
[('1', 'andrey'), (2, 'kapar'), (3, 'isa'), (5, 'murat')]

答案 1 :(得分:0)

如果长度不兼容,Python的zip将不会添加None你最简单的选择是使r2成为一个列表并在for循环之前在all_list中执行以下操作

    for i in range(len(l1), len(l2)):
        l1.append(None)
    for i in range(len(l2), len(l1)):
        l2.append(None)

答案 2 :(得分:0)

简单而愚蠢的解决方案

for i in xrange(len(r1)):
    try:
        d[r1[i]] = r2[i]
    except IndexError:
        d[r1[i]] = 'None'
相关问题