Как заставить max () возвращать имена переменных вместо значений в Python? - PullRequest
0 голосов
/ 06 сентября 2018

Итак, я хотел бы получить максимальное значение из 3 переменных: x, y, z.

x = 1
y = 2
z = 3
max(x, y, z)  # returns 3 but I want "z"

Однако это возвращает значение z, т.е. 3. Как я могу получить имя переменной, например, "z" вместо?

Спасибо

Ответы [ 5 ]

0 голосов
/ 06 сентября 2018

Создайте список чисел, затем введите max () вокруг списка.

0 голосов
/ 06 сентября 2018

Это вообще не рекомендуется, но вы можете использовать словарь globals(), который отслеживает все переменные, которые являются встроенными или определены пользователем:

x = 1
y = 2
z = 3

variables = {k: v for k, v in globals().items() if isinstance(v, int)}
max_value = max(variables.values())
res = next(k for k, v in variables.items() if v == max_value)

, что приводит к:

print(res)  # z
0 голосов
/ 06 сентября 2018

Используйте словарь и получите максимум его элементов, используя функцию ключа.

d = {'x':1, 'y':2, 'z':3}
max(d.items(), key=lambda i: i[1])
0 голосов
/ 06 сентября 2018

Составьте словарь и затем используйте max. Также работает с min. Он вернет вам имя переменной в виде строки.

>>> x = 1
>>> y = 2
>>> z = 3
>>> var = {x:"x",y:"y",z:"z"}
>>> max(var)
3
>>> var.get(max(var))
'z'
>>> var.get(min(var))
'x'
>>>
0 голосов
/ 06 сентября 2018

Вы можете поместить их в словарь и использовать max с ключом:

dict1 = {'x':1, 'y':2, 'z':3}
max(dict1, key=dict1.get)

Но подумайте над последствиями этого. Что делать, если у вас есть один и тот же val несколько раз, и другие крайние случаи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...