2016-10-28 6 views
-3

Я искал google и документацию, но я не могу найти ответ на простой вопрос. У меня есть соответствующие списки.Python 2.7.12: Как объединить два списка в словарь

NAMES = ['Alice', 'Bob', 'Cathy', 'Dan', 'Ed', 'Frank', 
     'Gary', 'Helen', 'Irene', 'Jack', 'Kelly', 'Larry'] 

AGES = [20, 21, 18, 18, 19, 20, 20, 19, 19, 19, 22, 19] 

Эти списки должны стать словарем, в котором AGES является ключом. Я написал функцию, однако она перезаписывает предыдущее вставленное значение в ключе ..

def combine_lists(list_a, list_b): 
    dictionary = dict() 
    for i in range(len(list_a)): 
     dictionary[list_a[i]] = list_b[i] 
    return dictionary 

print combine_lists(AGES, NAMES) 

Выполнение программы дает мне это:

{18: 'Dan', 19: 'Larry', 20: 'Gary', 21: 'Bob', 22: 'Kelly'} 

Что такое правильный способ решения этой (простой) проблема?

UPDATE:

То, что я хочу, что есть несколько значений, связанных с ключом, так что ключ 18 дает мне не только Дэн, но Кэти, как хорошо.

+2

Вы не сказали, что вы хотите * * результат будет. –

+0

Я думаю, что вы хотите, чтобы значения в dict были списками (к которым вы добавляете имена) – UnholySheep

ответ

4

Если вы хотите, чтобы данные, чтобы быть перечислены ...

from collections import defaultdict 

age_name_dict = defaultdict(list) 
for name, age in zip(NAMES, AGES): 
    age_name_dict[age].append(name) 
-2

Вы можете использовать zip function

это, вероятно, самый удобный и быстрый способ.

+0

OP хочет иметь dict, а не список кортежей – UnholySheep

+0

@UnholySheep, который может быть использован для построения dict, но не адресует OP вопрос. –

Смежные вопросы