2016-11-17 40 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' 
>>>