Найти - Пользователи
Полная версия: генератор словаря
Начало » Python для новичков » генератор словаря
1
SomethingButNotNickName
Добрый день.
Задача создать словарь. Ключами словаря должны стать элементы списка 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
Вернее, почему не срабатывает я уже понял, как исправить?
И можно ли в качестве элемента записать не список, а голое число?
 dict1 = {
    1: 6,
    2: 7,
    3: 8,
    4: 9
}
SomethingButNotNickName
Решение найдено.
 dict1 = {key: el for key, el in zip(keys, els)}
Если замечаний к моему варианту нет - прошу закрыть тему


JOHN_16
Замечание есть - читать документацию
 >>> els  = [6,7,8,9]
>>> keys = [1,2,3,4]
>>> dict(zip(keys, els))
{1: 6, 2: 7, 3: 8, 4: 9}
Rodegast
 >>> 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}
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB