我有几个值,像这样:
value_a = 5
value_b = 10
value_c = 20
我想找到最大值并打印该值的名称。 通常我会使用
val = [value_a, value_b, value_c]
print max (val)
但这只给我值(value)而不是名字。
请您参考如下方法:
您无需定义变量,而是需要创建一个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 执行最大操作在列表中。
