Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 23, 2013 23:07:16

rumba
Зарегистрирован: 2013-10-23
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Пронумеровать словари и сложить их в словарь

Я имею два списка

keys = ['key0', 'key1', 'key2']
values = [('value0', 'value1', 'value2'), ('value0', 'value1', 'value2'), ('value0', 'value1', 'value2')]
и в результате такого цикла
for value in values:
    print dict(zip(keys, value))
получаю такой результат
{'key2': 'value2', 'key1': 'value1', 'key0': 'value0'}
{'key2': 'value2', 'key1': 'value1', 'key0': 'value0'}
{'key2': 'value2', 'key1': 'value1', 'key0': 'value0'}
Подскажите, пожалуйста, как мне его еще пронумеровать и сложить в один общий словарь, чтобы получить такой результат:
{
1: {'key2': 'value2', 'key1': 'value1', 'key0': 'value0'},
2: {'key2': 'value2', 'key1': 'value1', 'key0': 'value0'},
3: {'key2': 'value2', 'key1': 'value1', 'key0': 'value0'}
}
Я пробую и дальше использовать zip() вместе с dict(), но у меня получается что-то не то и голова уже от этих всех вложенностей закипает. Помогите кто чем может

Отредактировано rumba (Окт. 23, 2013 23:08:08)

Офлайн

#2 Окт. 23, 2013 23:20:18

Romiss
От:
Зарегистрирован: 2011-11-01
Сообщения: 26
Репутация: +  4  -
Профиль   Отправить e-mail  

Пронумеровать словари и сложить их в словарь

Предлагаю так:

keys = ['key0', 'key1', 'key2']
values = [('value0', 'value1', 'value2'), ('value0', 'value1', 'value2'), ('value0', 'value1', 'value2')]
new_dict = {}
n = 1
for value in values:
    new_dict[n] = dict(zip(keys, value))
    n += 1



Офлайн

#3 Окт. 23, 2013 23:25:04

rumba
Зарегистрирован: 2013-10-23
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Пронумеровать словари и сложить их в словарь

Romiss, не знал что можно так. спасибо, очень познавательная реализация для меня.

Офлайн

#4 Окт. 23, 2013 23:44:52

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Пронумеровать словари и сложить их в словарь

rumba
как мне его еще пронумеровать и сложить в один общий словарь
Легко
dict(enumerate(map(lambda x: dict(zip(keys, x)), values), 1))



Отредактировано Budulianin (Окт. 23, 2013 23:50:40)

Офлайн

#5 Окт. 24, 2013 00:12:35

rumba
Зарегистрирован: 2013-10-23
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Пронумеровать словари и сложить их в словарь

Да-да, знаю такое: сейчас подтянутся остальные функциональщики и начнут мериться скобками
В любом случае, это круто, но для моего сознания пока сложновато.

Офлайн

#6 Окт. 24, 2013 05:26:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9741
Репутация: +  843  -
Профиль   Отправить e-mail  

Пронумеровать словари и сложить их в словарь

>>> keys = ['key0', 'key1', 'key2']
>>> values = [('value0', 'value1', 'value2'), ('value0', 'value1', 'value2'), ('value0', 'value1', 'value2')]
>>> 
>>> g = (dict(zip(keys, value)) for value in values)
>>> d = dict(enumerate(g, 1))
>>> d
{1: {'key2': 'value2', 'key1': 'value1', 'key0': 'value0'}, 2: {'key2': 'value2', 'key1': 'value1', 'key0': 'value0'}, 3: {'key2': 'value2', 'key1': 'value1', 'key0': 'value0'}}
>>>

разделил, чтобы читалось лучше



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version