2016-11-17 43 views
1

我有几个值的最大值,这样找到变量/键:Python中,基于

value_a = 5 
value_b = 10 
value_c = 20 

我想找到的最大值和打印值的名称。 通常我会用

val = [value_a, value_b, value_c] 
print max (val) 

但这只是给了我的价值,而不是名字。

+13

您正在混合数据和代码,请改用字典。 – RemcoGerlich

+2

可能相关:http://stackoverflow.com/questions/592746/how-can-you-print-a-variable-name-in-python – Lafexlos

+0

不短,但你可以使用'if ... elif' – depperm

回答

7

而不是定义变量,您需要创建一个dict来映射名称与值。那么你需要拨打max()operator.itemgetter()作为key它。例如:

my_dict = { 
    'value_1': 10, 
    'value_2': 30, 
    'value_3': 20 
} 

from operator import itemgetter 

var_text, value = max(my_dict.items(), key=itemgetter(1)) 
# Value of: 
# `var_text`: "value_2" 
# `value`: 30 

这里,max()将返回元组在dict最大值。

如果你不关心的最大值,只是想和你的key拿着它,你可以这样做:

>>> max(my_dict, key=my_dict.get) 
'value_2' 

说明:

my_dict.items()将在返回元组的列表格式为[(key, value), ..]。在我给的例子,它会举行:

[('value_1', 10), ('value_3', 20), ('value_2', 30)] 

key=itemgetter(1)中的语句会告诉max()到列表中的每个元组的索引1执行的最大操作。

0

为这些值创建一个字典,然后在print语句中调用该函数。

values = { 
    'value_1': 10, 
    'value_2': 30, 
    'value_3': 20 
} 

print (max(values, key=lambda i: values[i])) 

输出:

value_2 
1

这个怎么样。 :)

In [1]: the_dict = {'value_a':5, 'value_b':10, 'value_c':20} 

In [2]: max(the_dict, key=the_dict.get) 

输出:

Out[2]: 'value_c' 
1

您需要使用字典或命名元组。使用字典的示例如下

Python 3.4.3 (default, Sep 14 2016, 12:36:27) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> vdict={'value_a':5,'value_b':10,'value_c':20} 
>>> max(vdict, key=vdict.get) 
'value_c' 
>>>