Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python 3.3.4列表中获取具有最高整数的变量的名称_Python_List - Fatal编程技术网

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

从Python 3.3.4列表中获取具有最高整数的变量的名称,python,list,Python,List,最近尝试了类似于 (当然是Python的形式)但是,当返回值时,我得到的是变量的值,而不是变量的名称 我的数组如下所示: x = 1 y = 2 z = 3 alloutputs = [x, y, z] >>> d = {'x': 1, 'y': 2, 'z': 3} >>> max(d, key=d.get) 'z' 在需要帮助之前,最远、最丑陋的是: alloutputs[alloutputs.index(max(alloutputs))] 但

最近尝试了类似于

(当然是Python的形式)但是,当返回值时,我得到的是变量的值,而不是变量的名称

我的数组如下所示:

x = 1

y = 2

z = 3

alloutputs = [x, y, z]
>>> d = {'x': 1, 'y': 2, 'z': 3}
>>> max(d, key=d.get)
'z'
在需要帮助之前,最远、最丑陋的是:

alloutputs[alloutputs.index(max(alloutputs))]

但是它仍然给我一个最大值的整数!根据最大的变量,如何取回x、y或z的名称?

列表不会保存变量的名称。使用字典或:


正如@zhangxaochen所说,您需要使用字典或命名元组。您可以使用这样的词典:

x = 1

y = 2

z = 3

alloutputs = [x, y, z]
>>> d = {'x': 1, 'y': 2, 'z': 3}
>>> max(d, key=d.get)
'z'

您可以使用字典:

alloutputs = {'x':1,'y':2,'z':3}
maxvalue = max(alloutputs.values())
print [k for k, v in alloutputs.iteritems() if v == maxvalue]

然而,如果你真的必须这样做,你可能需要重新考虑你的设计,IMHO。

免责声明:这太糟糕了,你不应该这样做

[var for var in dir() if eval(var) == max(all)][0]

它可以满足您的需要,但正如其他人所说,您最好使用字典。

为什么需要变量名而不是值?可能还有更好的选择,例如,将这些变量转换为字典条目;它们在算法之外没有任何意义,并且用于它们的符号是任意的。你的意思是
max(d,key=d.get)
谢谢你给我关于词典的建议,这对我的需要来说还是很快的,效果很好。谢谢。
sorted(…)[-1]
是拼写
max(…)
的一种愚蠢的方式。在字典上循环就像用一个加载的Uzi棍棒打死一个人。使用
max
key
参数,例如
max(alloutput,key=alloutput.get)
或类似的东西。当你使用一个合适的、单独的字典代替
locals()
@delnan时,它就变成了完美的设计。你的意思是,根据变量的名称,它被认为是一个好的设计?一点也不好。我说的不是变量名,只是一个字典键(很可能不是硬编码的,而是来自动态数据源)。@delnan但OP试图获取变量名,该变量名具有最大值。这就是为什么我希望他重新考虑这个设计。我同意,我已经在对这个问题的评论中告诉了OP同样的事情。