Как я могу добавить список значений в словарь, где первый элемент в списке принадлежит первому ключу и так далее …?

#python #dictionary

#python #словарь

Вопрос:

У меня есть словарь с предопределенными ключами:

 {1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None}
  

и список с числовыми значениями:

 [0, 10, 20, 30, 40, 50, 60, 100] 
  

Я хочу добавить эти значения из списка в словарь, чтобы он выглядел так:

 {1: 0, 2: 10, 3: 20, 4: 30, 5: 40, 6: 50, 7: 60, 8: 100}
  

Как я могу добавить каждый элемент из списка в следующий ключ моего словаря?

Комментарии:

1. {key:val for key,val in zip(m_dict.keys(), m_list)}

Ответ №1:

Вы напрямую используете zip dict и список значений, создаете пары, а затем dict используете для создания сопоставлений из пар

 d = {1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None}
v = [0, 10, 20, 30, 40, 50, 60, 100]

res = dict(zip(d, v))

print(res) # {1: 0, 2: 10, 3: 20, 4: 30, 5: 40, 6: 50, 7: 60, 8: 100}
  

Вам может показаться странным передавать весь dict d zip , но итерация по th dict такая же, как итерация по его ключу на самом деле, следующее может иметь больше смысла, но оно делает то же самое

 dict(zip(d.keys(), v))
  

Комментарии:

1. есть ли вероятность, что ключи словаря не подбираются последовательно?

Ответ №2:

Ниже приведено более динамичное решение, в котором вам не нужно подготавливать наполовину заполненный dict

 a_list = [0, 10, 20, 30, 40, 50, 60, 100] 
a_dict = {idx 1:val for idx,val in enumerate(a_list)}
print(a_dict)
  

вывод

 {1: 0, 2: 10, 3: 20, 4: 30, 5: 40, 6: 50, 7: 60, 8: 100}