Форум сайта python.su
Всем привет!
Подскажите пожалуйста как поступить в таком случае. Есть список из словарей, в каждом из которых содержится по 2 пары ключ-значение
Мне нужно в каждом словаре выяснить какое значение больше, какое меньше или возможно оба значения равны. Функции max и min не подходят, т.к. не работают, когда значения равны {'e': 9, ‘f’: 9}.
Как это можно осуществить?
Заранее всем благодарен за помощь новичку)
Офлайн
Arthorius чем вас не устраивают операторы сравнения “<”, “>”, “==”?
http://pythonicway.com/python-operators
[code python][/code]
Отредактировано PEHDOM (Фев. 26, 2021 21:59:05)
Офлайн
>>> 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)}] >>>
Офлайн
PEHDOMЯ наверное не точно сформулировал вопрос… Мне нужно понять, как можно сравнить значения ключей? Т.е. имея словарь из двух пар ключ-значение, как понять у какого ключа значение больше, у какого меньше, или они равны?
Arthorius чем вас не устраивают операторы сравнения “<”, “>”, “==”?http://pythonicway.com/python-operators
Отредактировано Arthorius (Фев. 28, 2021 18:24:46)
Офлайн
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
Офлайн
xam1816Спасибо за идею с False/True. Это немного приблизило меня к решению задачи.
Офлайн