2015-05-02 2 views
0

У меня есть два словаря, которые я хотел использовать:Нахождение в среднем с помощью двух словарей

dictionary1 = {'Reece': 2, 'Harry': 3, 'Jack': 3, 'Sam': 3, 'Dom': 3} 
dictionary2 = {'Reece': 1, 'Harry': 14, 'Jack': 8, 'Sam': 16, 'Dom': 5} 

Я хотел бы разделить каждое значение Dictionary2 значением в dictionary1 и распечатать это. Это будет печатать что-то вроде:

Reece: 0,5

Гарри: 4,66

В настоящее время я пытаюсь напечатать и вокруг них с помощью этого кода, который erroring:

for b in dictionary2 
      print('{}: {} '.format(b[0], round(b[1]/dictionary1[1], 2))) 

ответ

1

Вот один из способов сделать это с помощью клавиш

In [74]: {k: round(float(dictionary2[k])/dictionary1[k],2) for k in dictionary2} 
Out[74]: {'Dom': 1.67, 'Harry': 4.67, 'Jack': 2.67, 'Reece': 0.5, 'Sam': 5.33} 

Или использовать items, как @JuniorCompressor отметил

In [75]: {k: round(float(v)/dictionary1[k], 2) for k, v in dictionary2.items()} 
Out[75]: {'Dom': 1.67, 'Harry': 4.67, 'Jack': 2.67, 'Reece': 0.5, 'Sam': 5.33} 
0
results = {item:round(dictionary2.get(item)/dictionary1.get(item), 2) for item in dictionary1} 

results:

{ 'Reece': 0,5 'Гарри': 4,67, 'Сэм': 5,33 " Dom ': 1.67,' Jack ': 2.67}

print(*(': '.join([item, str(results.get(item))]) for item in results), sep='\n') 

Reece: 0,5

Гарри: 4,67

Сэм: 5,33

Дом: 1,67

Джек: 2,67

+0

Вы можете использовать 'поплавка (dictionary2.get (пункт)) 'как по умолчанию python2 делает int division. – Zero

+0

Хорошо отметить для тех, кто использует Python 2, но вопрос задал Python 3, так что все должно быть в порядке. – TigerhawkT3

0

hovewer логика почти то же самое с решениями выше , вы можете интуитивно поймать, что происходит. Вы можете форматировать поплавки для вашей потребности при печати или сохранения

>>> for k1 in dictionary2.keys(): 
...  for k2 in dictionary1.keys(): 
...    if k1 == k2: 
...      print k1, float(dictionary2[k1])/dictionary1[k2] 

ниже один более простой - так питон interpeteter не будет перегружен

>>> for k in dictionary2.keys(): 
...  print k, float(dictionary2[k])/dictionary1[k] 
Смежные вопросы