最近尝试了与PHP get largest number from 3 variables
类似的内容(当然是Python的形式)但是当返回值时,我得到变量的值,而不是变量的名称。
我的数组看起来像这样:
x = 1
y = 2
z = 3
alloutputs = [x, y, z]
在需要帮助之前最远和最丑陋的是:
alloutputs[alloutputs.index(max(alloutputs))]
然而,它仍然给我一个最高值的整数!我如何取回x,y或z的名称,具体取决于哪个最大?
答案 0 :(得分:10)
正如@zhangxaochen所说,你需要使用字典或命名元组。您可以使用这样的字典:
>>> d = {'x': 1, 'y': 2, 'z': 3}
>>> max(d, key=d.get)
'z'
答案 1 :(得分:2)
列表不保存变量的名称。使用字典或namedtuple:
In [296]: d=dict(x=1, y=2, z=3)
In [297]: from operator import itemgetter
...: max(d.items(), key=itemgetter(1))[0]
...:
Out[297]: 'z'
答案 2 :(得分:1)
x, y, z = 1, 2, 3
alloutputs = ["x", "y", "z"]
print max(alloutputs, key = locals().get)
但是,如果你真的必须这样做,你可能想重新考虑你的设计,恕我直言。
答案 3 :(得分:1)
免责声明:这很糟糕,你不应该这样做。
[var for var in dir() if eval(var) == max(all)][0]
它可以满足您的需求,但正如其他人所说的那样 - 使用字典会更好。
答案 4 :(得分:0)
您可以使用字典:
alloutputs = {'x':1,'y':2,'z':3}
maxvalue = max(alloutputs.values())
print [k for k, v in alloutputs.iteritems() if v == maxvalue]