获取列表Python 3.3.4中具有最高整数的变量名称

时间:2014-02-18 14:02:12

标签: python list

最近尝试了与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的名称,具体取决于哪个最大?

5 个答案:

答案 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]