Форум сайта python.su
Я имею два списка
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'} }
Отредактировано rumba (Окт. 23, 2013 23:08:08)
Офлайн
Предлагаю так:
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
Офлайн
Romiss, не знал что можно так. спасибо, очень познавательная реализация для меня.
Офлайн
rumbaЛегко
как мне его еще пронумеровать и сложить в один общий словарь
dict(enumerate(map(lambda x: dict(zip(keys, x)), values), 1))
Отредактировано Budulianin (Окт. 23, 2013 23:50:40)
Офлайн
Да-да, знаю такое: сейчас подтянутся остальные функциональщики и начнут мериться скобками
В любом случае, это круто, но для моего сознания пока сложновато.
Офлайн
>>> 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'}} >>>
Офлайн