Задать вопрос
@megamutex

Найти разницу значений в списке словарей?

Добрый день! Изучаю питон и программирование в целом, возник вопрос.
Допустим есть список словарей:
list = [{'Name': 'banana', 'Count': 10}, {'Name': 'apple', 'Count': 15}]

Например, каждые 5 сек. значения в словарях меняются:
list = [{'Name': 'banana', 'Count': 12}, {'Name': 'apple', 'Count': 18}]

Как найти разницу значений в словарях и вывести словари, в котором разница, например >= 3?
Т.е. список изменился. В apple count стало 18, предыдущее значение было 15. 18 -15 = 3, подходит, выводим название apple и его настоящее значение
  • Вопрос задан
  • 319 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
longclaps
@longclaps
1. Не будь дураком - не используй имя базового типа "list" не по назначению.
2. Не будь дураком - не впихивай сравнение по разности там, где значения могут быть нечислового типа (сколько будет 'banana' - 'apple'?)
3. Не будь дураком - выбери для сравнения что-то поудобнее словарей, либо наложи адекватные ограничения на них.
from copy import deepcopy

data = [{'Name': 'banana', 'Count': 10}, {'Name': 'apple', 'Count': 15}]
prev_data = deepcopy(data)
data[0]['Count'] = 12
data[1]['Count'] = 18

for a, b in zip(data, prev_data):
    if a['Name'] == b['Name']:
        if abs(a['Count'] - b`['Count']) >= 3:
            print(a)
    else:
        raise ValueError("смешались в кучу кони, люди")
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kgbplus
Для таких случаев вместо словарей используют объекты у которых сеттеры считают нужные разницы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы