Итак, я хотел бы получить максимальное значение из 3 переменных: x, y, z.
x
y
z
x = 1 y = 2 z = 3 max(x, y, z) # returns 3 but I want "z"
Однако это возвращает значение z, т.е. 3. Как я могу получить имя переменной, например, "z" вместо?
3
"z"
Спасибо
Создайте список чисел, затем введите max () вокруг списка.
Это вообще не рекомендуется, но вы можете использовать словарь globals(), который отслеживает все переменные, которые являются встроенными или определены пользователем:
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
Используйте словарь и получите максимум его элементов, используя функцию ключа.
d = {'x':1, 'y':2, 'z':3} max(d.items(), key=lambda i: i[1])
Составьте словарь и затем используйте max. Также работает с min. Он вернет вам имя переменной в виде строки.
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' >>>
Вы можете поместить их в словарь и использовать max с ключом:
dict1 = {'x':1, 'y':2, 'z':3} max(dict1, key=dict1.get)
Но подумайте над последствиями этого. Что делать, если у вас есть один и тот же val несколько раз, и другие крайние случаи.