Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 12, 2018 15:26:26

SomethingButNotNickName
Зарегистрирован: 2017-12-19
Сообщения: 75
Репутация: +  0  -
Профиль   Отправить e-mail  

генератор словаря

Добрый день.
Задача создать словарь. Ключами словаря должны стать элементы списка keys, а элементами словаря должны стать элементы списка els. т.е.:

 keys = [1,2,3,4]
els  = [6,7,8,9]
dict1 = {
    1: [6],
    2: [7],
    3: [8],
    4: [9]
}
 dict1 = {key: [el for el in els] for key in keys}
for key in dict1:
    print(key, dict1[key])
Но получается так:
 1 [6, 7, 8, 9]
2 [6, 7, 8, 9]
3 [6, 7, 8, 9]
4 [6, 7, 8, 9]
Почему цикл по els не срабатывает и в качестве элемента записывается весь список?

Отредактировано SomethingButNotNickName (Янв. 12, 2018 15:29:32)

Офлайн

#2 Янв. 12, 2018 15:32:39

SomethingButNotNickName
Зарегистрирован: 2017-12-19
Сообщения: 75
Репутация: +  0  -
Профиль   Отправить e-mail  

генератор словаря

Вернее, почему не срабатывает я уже понял, как исправить?
И можно ли в качестве элемента записать не список, а голое число?

 dict1 = {
    1: 6,
    2: 7,
    3: 8,
    4: 9
}

Офлайн

#3 Янв. 12, 2018 15:46:20

SomethingButNotNickName
Зарегистрирован: 2017-12-19
Сообщения: 75
Репутация: +  0  -
Профиль   Отправить e-mail  

генератор словаря

Решение найдено.

 dict1 = {key: el for key, el in zip(keys, els)}
Если замечаний к моему варианту нет - прошу закрыть тему


Офлайн

#4 Янв. 12, 2018 15:58:30

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

генератор словаря

Замечание есть - читать документацию

 >>> els  = [6,7,8,9]
>>> keys = [1,2,3,4]
>>> dict(zip(keys, els))
{1: 6, 2: 7, 3: 8, 4: 9}



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Янв. 12, 2018 20:55:42

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

генератор словаря

 >>> keys = [1,2,3,4]
>>> els  = [6,7,8,9]
>>> { k:v for k,v in zip(keys, els) }
{1: 6, 2: 7, 3: 8, 4: 9}
>>> { keys.pop():els.pop() for _ in xrange(len(keys)) }
{1: 6, 2: 7, 3: 8, 4: 9}



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version