2014-03-29 38 views
2

如果你有類似使用min函數

d1 = 5, d4 = 4 

,然後調用函數

min(d1, d4) 

的你怎麼能輸出d4代替4?換句話說,我想從最小值的最小值函數中輸出變量或索引,而不是值本身?

+0

使用argmin與numpy。 – Simon

回答

6

你很少要正確對待你的代碼(即您的變量名稱)的數據。使用字典來代替:

>>> d = { 'd1': 5, 'd4': 4 } 
>>> print min(d, key=d.get) 
d4 
0

你可以使用一個for循環:

minVal = min(list) 
index = 0 
for i in xrange(len(list)): 
    if (minVal == list[i]): 
     index = i 
     break 

遍歷,查看其是否相等,然後保存索引並打破

編輯

你也可以使用一個函數我不知道下list.index()

minVal = min(list) 
index = list.index(minVal) 
+0

該循環可以並且應該用'list.index(minVal)'代替。 – delnan

+0

@delnan哦,酷酷之前沒有聽說過這種方法,請檢查編輯 –

0

這裏是一個不錯的列表理解:

d = [2, 5, -2, 7, 6, 4] 
>>> [index for index, val in enumerate(d) if val == min(d)][0] 
2 
+0

如果你只想從你的列表理解中得到一個單值,爲什麼不直接執行'd.index(min(d))'? – Blckknght

0

你可以使用list對象的index方法:

>>> mylist = [1, 2, 6, 8, 7, 4, -5, 4, 5, 6] 
>>> mylist.index(min(mylist)) 
6 
+0

我不明白這個抄本是如何成爲現實的。 'mylist'只有2個元素,所以'mylist.index'不能返回2. – DSM

+0

Oups!你是對的... –