如何获取max()返回变量名而不是Python中的值?

时间:2018-09-06 13:16:11

标签: python

所以我想从xyz这3个变量中获取最大值。

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

但是,这将返回z的值,即3。如何获取变量的名称,例如改为"z"

谢谢

5 个答案:

答案 0 :(得分:3)

制作字典,然后使用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'
>>>

答案 1 :(得分:2)

您可以将它们放入字典,并通过键使用max:

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

但是请仔细考虑一下。如果您多次具有相同的val,并且存在其他边缘情况,该怎么办。

答案 2 :(得分:1)

使用字典,并通过按键功能获得最多的项目。

d = {'x':1, 'y':2, 'z':3}
max(d.items(), key=lambda i: i[1])

答案 3 :(得分:-1)

完全不建议这样做,但是您可以使用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

答案 4 :(得分:-2)

创建一个数字列表,然后在列表周围键入max()。