2017-02-17 1 views
0

Я создаю словарь из 2-х списков, первый список - это ключ, а второй - значение, если значение в словаре не указано. Я должен написать« Нет » 'к ключу. Длина списков может быть разной.Создайте словарь из 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'}

ответ

1

Проверьте, как молния работает:

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

зип Python никогда не будет добавлять None это, если длина не совместимый. Самый простой способ - сделать r2 список и выполнить крыло в all_list перед вашим циклом

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

Спасибо, за ответ, да я просто понял, что молния никогда не будет добавлять None это, если длины не совместимы –

0

Простое и глупо решение

for i in xrange(len(r1)): 
    try: 
     d[r1[i]] = r2[i] 
    except IndexError: 
     d[r1[i]] = 'None' 
Смежные вопросы