我有几个值的最大值,这样找到变量/键:Python中,基于
value_a = 5
value_b = 10
value_c = 20
我想找到的最大值和打印值的名称。 通常我会用
val = [value_a, value_b, value_c]
print max (val)
但这只是给了我的价值,而不是名字。
我有几个值的最大值,这样找到变量/键:Python中,基于
value_a = 5
value_b = 10
value_c = 20
我想找到的最大值和打印值的名称。 通常我会用
val = [value_a, value_b, value_c]
print max (val)
但这只是给了我的价值,而不是名字。
而不是定义变量,您需要创建一个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
执行的最大操作。
为这些值创建一个字典,然后在print语句中调用该函数。
values = {
'value_1': 10,
'value_2': 30,
'value_3': 20
}
print (max(values, key=lambda i: values[i]))
输出:
value_2
这个怎么样。 :)
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'
您需要使用字典或命名元组。使用字典的示例如下
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'
>>>
您正在混合数据和代码,请改用字典。 – RemcoGerlich
可能相关:http://stackoverflow.com/questions/592746/how-can-you-print-a-variable-name-in-python – Lafexlos
不短,但你可以使用'if ... elif' – depperm