2016-08-22 2 views
1

У меня есть два списка и массив:Создание вложенного словаря со списками и массивами

owners = [ 'Bill', 'Ann', 'Sarah'] 

dog = ['shepherd', 'collie', 'poodle', 'terrier'] 

totals = [[5, 15, 3, 20],[3,2,16,16],[20,35,1,2]] 

Я хочу сделать вложенный словарь из них.

dict1 = {'Bill': {'shepherd': 5, 'collie': 15, 'poodle': 3, 'terrier': 20}, 
      'Ann': {'shepherd': 3, 'collie': 2, 'poodle': 16, 'terrier': 16}, 
      'Sarah': {'shepherd': 20, 'collie': 35, 'poodle': 1, 'terrier': 2} 
      } 

Моя ближайшая попытка:

totals_list = totals.tolist() 

dict1 = dict(zip(owners, totals_list)) 

Я не могу найти способ, чтобы создать вложенный словарь Я ищу. Какие-либо предложения?

+0

К сожалению, я новичок в Python. Итоги являются поплавками или целыми числами? Я предполагаю. Я изучаю словари, и я хочу сделать некоторые вычисления для таких итогов, как возведение в квадрат их, деление, добавление и т. Д. –

+0

В вашем примере итоговые значения имеют тип «list», который на самом деле является списком целых чисел –

ответ

4
main_dict = {} 
for owner, total in zip(owners, totals): 
    main_dict[owner] = {} 
    for key, value in zip(dog, total): 
     main_dict[owner][key] = value 

Вы также можете записать его в одну строку dict comprehension как:

main_dict = {owner: dict(zip(dog, total)) for owner, total in zip(owners, totals)} 

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

  • Нет связанных вопросов^_^