Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 26, 2021 21:48:27

Arthorius
Зарегистрирован: 2021-02-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сравнить ключи в одном словаре на основе их значения?

Всем привет!
Подскажите пожалуйста как поступить в таком случае. Есть список из словарей, в каждом из которых содержится по 2 пары ключ-значение

Мне нужно в каждом словаре выяснить какое значение больше, какое меньше или возможно оба значения равны. Функции max и min не подходят, т.к. не работают, когда значения равны {'e': 9, ‘f’: 9}.
Как это можно осуществить?
Заранее всем благодарен за помощь новичку)

Офлайн

#2 Фев. 26, 2021 21:58:10

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как сравнить ключи в одном словаре на основе их значения?

Arthorius чем вас не устраивают операторы сравнения “<”, “>”, “==”?
http://pythonicway.com/python-operators



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Фев. 26, 2021 21:59:05)

Офлайн

#3 Фев. 27, 2021 03:12:41

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Как сравнить ключи в одном словаре на основе их значения?

  
>>> def f(dct):
...    k1, k2 = dct
...    v1, v2 = dct[k1], dct[k2]
...    if v1 > v2:
...        return {'greater': (k1, v1), 'less': (k2, v2), 'equal': None}
...    elif v1 < v2:
...        return {'greater': (k2, v2), 'less': (k1, v1), 'equal': None}
...    else:
...        return {'greater': None, 'less': None, 'equal': ((k1, v1), (k2, v2))}
... 
>>> lst = [
...     {'a1': 1, 'b1': 2},
...     {'a2': 3, 'b2': 1},
...     {'a3': 4, 'b3': 4},
...     {'a4': 5, 'b4': 6}
... ]
>>> 
>>> out = list(map(f, lst))
>>> out
[{'greater': ('b1', 2), 'less': ('a1', 1), 'equal': None}, {'greater': ('a2', 3), 'less': ('b2', 1), 'equal': None}, {'greater': None, 'less': None, 'equal': (('a3', 4), ('b3', 4))}, {'greater': ('b4', 6), 'less': ('a4', 5), 'equal': None}]
>>> 
>>> import pprint
>>> pprint.pprint(out)
[{'equal': None, 'greater': ('b1', 2), 'less': ('a1', 1)},
 {'equal': None, 'greater': ('a2', 3), 'less': ('b2', 1)},
 {'equal': (('a3', 4), ('b3', 4)), 'greater': None, 'less': None},
 {'equal': None, 'greater': ('b4', 6), 'less': ('a4', 5)}]
>>> 



Офлайн

#4 Фев. 28, 2021 18:21:42

Arthorius
Зарегистрирован: 2021-02-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сравнить ключи в одном словаре на основе их значения?

PEHDOM
Arthorius чем вас не устраивают операторы сравнения “<”, “>”, “==”?http://pythonicway.com/python-operators
Я наверное не точно сформулировал вопрос… Мне нужно понять, как можно сравнить значения ключей? Т.е. имея словарь из двух пар ключ-значение, как понять у какого ключа значение больше, у какого меньше, или они равны?
Например: {'e': 9, ‘f’: 10} - из этого словаре мне нужно понять у ключа ‘e’ больше значение, или у ключа ‘f’? Или может у них у обоих значения равны?

Отредактировано Arthorius (Фев. 28, 2021 18:24:46)

Офлайн

#5 Фев. 28, 2021 19:21:17

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1359
Репутация: +  119  -
Профиль   Отправить e-mail  

Как сравнить ключи в одном словаре на основе их значения?

 print('e' > 'f')
print('f' > 'e')
вывод
 False
True
Process finished with exit code 0

 d = {'e': 9, 'f': 9}
print(d['e'] > d['f'])
print(d['e'] < d['f'])
print(d['e'] == d['f'])
keys = list(d.keys())
print(f'{keys[0]} > {keys[1]} => {keys[0]>keys[1]}')
вывод
 False
False
True
e > f => False
Process finished with exit code 0

Офлайн

#6 Март 8, 2021 17:19:04

Arthorius
Зарегистрирован: 2021-02-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сравнить ключи в одном словаре на основе их значения?

xam1816
Спасибо за идею с False/True. Это немного приблизило меня к решению задачи.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version