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

Мне нужно в каждом словаре выяснить какое значение больше, какое меньше или возможно оба значения равны. Функции max и min не подходят, т.к. не работают, когда значения равны {'e': 9, ‘f’: 9}.
Как это можно осуществить?
Заранее всем благодарен за помощь новичку)
PEHDOM
Arthorius чем вас не устраивают операторы сравнения “<”, “>”, “==”?
http://pythonicway.com/python-operators
py.user.next
  
>>> 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)}]
>>> 
Arthorius
PEHDOM
Arthorius чем вас не устраивают операторы сравнения “<”, “>”, “==”?http://pythonicway.com/python-operators
Я наверное не точно сформулировал вопрос… Мне нужно понять, как можно сравнить значения ключей? Т.е. имея словарь из двух пар ключ-значение, как понять у какого ключа значение больше, у какого меньше, или они равны?
Например: {'e': 9, ‘f’: 10} - из этого словаре мне нужно понять у ключа ‘e’ больше значение, или у ключа ‘f’? Или может у них у обоих значения равны?
xam1816
 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
Arthorius
xam1816
Спасибо за идею с False/True. Это немного приблизило меня к решению задачи.
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