Создать элемент списка со словарем Python и элементами списка - PullRequest
0 голосов
/ 14 декабря 2018

Пожалуйста, прости меня за вопрос, но, несмотря на массу тем dictionary.update, я не смог найти ту, которая является примером того, что я хочу сделать.

У меня есть словарь:

dictionary = {1:'a', 2:'b', 3:'c', 4:'d'}

и у меня есть список:

zip_codes = [25840, 26807, 24739, 26501]

Я хочу добавить каждый элемент списка в значения словаря.Результат будет выглядеть следующим образом:

dictionary = {1:('a', 25840), 2:('b', 26807), 3:('c', 24739), 4:('d', 26501)}

Лучший результат, который я получу, это попробовать что-то вроде этого:

for i in zip_codes:
    new_list = [(key,value, i) for key, value in dictionary.items()]

print(new_list)

Но это возвращает следующее:

[(1, 'a', 26501), (2, 'b', 26501), (3, 'c', 26501), (4, 'd', 26501)]

Поскольку я перебираю элементы списка, в результате я получаю последний элемент списка (26501).Я в тупике.

Ответы [ 4 ]

0 голосов
/ 14 декабря 2018

Вы можете просто использовать dictionary.update, и, поскольку вы используете числа в качестве ключей словаря, вы можете использовать обычный старый цикл for и даже не использовать enumerate, но вы должны помнить, чтоиндексы списка начинаются с 0, а ключи словаря начинаются с 1:

dictionary = {1:'a', 2:'b', 3:'c', 4:'d'}
zip_codes = [25840, 26807, 24739, 26501]

for i in range(1, len(zip_codes)+1):
    d1 = {i:[dictionary[i], zip_codes[i-1]]}
    dictionary.update(d1)

print(dictionary)
>>>{1: ['a', 25840], 2: ['b', 26807], 3: ['c', 24739], 4: ['d', 26501]}
0 голосов
/ 14 декабря 2018

Измените new_list на

   new_list = {key: (value, i) for key, value in dictionary.items()}

, чтобы ключ был ... ключом, а общая структура - словарём

0 голосов
/ 14 декабря 2018

Имея расширенное понимание, вы можете перечислять в своем словаре и устанавливать новые значения в кортеж из существующих значений и соответствующий почтовый индекс:

new_dict = {k:tuple([v,zip_codes[i]]) for i, (k,v) in enumerate(dictionary.items())}
>>> new_dict
{1: ('a', 25840), 2: ('b', 26807), 3: ('c', 24739), 4: ('d', 26501)}

Или очень похожим образом вы можете сжать словарьи почтовые индексы и перебрать это:

new_dict = {k:tuple([v,z]) for z, (k,v) in zip(zip_codes,dictionary.items())}
>>> new_dict
{1: ('a', 25840), 2: ('b', 26807), 3: ('c', 24739), 4: ('d', 26501)}
0 голосов
/ 14 декабря 2018

Полагаю, ключ словаря - это порядок, в который вы хотите добавить почтовые индексы?

dictionary = {1:'a', 2:'b', 3:'c', 4:'d'}
zip_codes = [25840, 26807, 24739, 26501]

for i, zip_code in enumerate(zip_codes, 1):
    dictionary[i] = (dictionary[i], zip_code)

print(dictionary)

Какие отпечатки

{1: ('a', 25840), 2: ('b', 26807), 3: ('c', 24739), 4: ('d', 26501)}

Возможно, вы захотите взглянуть наДокументы Python о enumerate или этот вопрос о StackOverflow об этом Что означает перечисление?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...