Найти - Пользователи
Полная версия: Как равнить значения двух словарей?
Начало » Python для экспертов » Как равнить значения двух словарей?
1
Nurullokhon
Словарь 1:
year2017 = {st_lenin:[{
“ИМЯ”: “Вася”,
“Год”: 2001,
“Вес”:57
},{
“ИМЯ”: “Петя”,
“Год”: 2004,
“Вес”:55
}]}
Словарь 2:
year2018 = {st_lenin:[{
“ИМЯ”: “Вася”,
“Год”: 2001,
“Вес”:60
},{
“ИМЯ”: “Петя”,
“Год”: 2004,
“Вес”:54
}]}
И так вопрос. Как сравнить сколько прибавили или убавили в весе молодые люди. Сравнить списки умею а вот словари не смог. помогите пожалуйста.
py.user.next
  
>>> year2017 = {'st_lenin': [{'ИМЯ': 'Вася', 'Год': 2001, 'Вес': 57},
...                          {'ИМЯ': 'Петя', 'Год': 2004, 'Вес': 55}]}
>>> year2018 = {'st_lenin': [{'ИМЯ': 'Вася', 'Год': 2001, 'Вес': 60},
...                          {'ИМЯ': 'Петя', 'Год': 2004, 'Вес': 54}]}
>>> 
>>> for d1, d2 in zip(year2017['st_lenin'], year2018['st_lenin']):
...     if d1['ИМЯ'] == d2['ИМЯ']:
...         print(d1['ИМЯ'])
...         print(d1['Вес'], d2['Вес'], '=>', d2['Вес'] - d1['Вес'])
... 
Вася
57 60 => 3
Петя
55 54 => -1
>>>
Rodegast
Делай словари такими что бы с ними было удобно работать. Например так:
 >>> year2017 = {'st_lenin': {('Вася', 2001): 57, ('Петя', 2004): 55}}
>>> year2018 = {'st_lenin': {('Вася', 2001): 60, ('Петя', 2004): 54}}
>>> { k1: x-y for k1, x in year2018["st_lenin"].items() for k2, y in year2017["st_lenin"].items() if k1 == k2 }
{('Вася', 2001): 3, ('Петя', 2004): -1}
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB