2016-11-15 78 views
0

python 3的新手,並嘗試使用某些字典。查找字典中與給定數字最接近的值

我要去的是我有一個有很多鍵的字典,例如{Dog : 2, Cat : 5, Fish : 3}但它真的很大。現在我給了一個值,例如2,我希望它返回十個字典元素的值最接近2

任何想法,如果有可能做到這一點,如果有的話,可以有人指出我在正確的道路上?

對不起,我剛剛意識到,實際上我想要返回的是關鍵。

+0

最接近於2和3或像[最近的鄰居](http://scikit-learn.org/stable/modules/neighbors.html)一些更科學的方法 –

+0

值是否總是一個數字? –

+0

所以如果在我的字典中有5個元素的值爲2,值爲1的元素的值爲3,值4的值爲1,值6的值爲0,值爲9,值'4'。然後它會返回值爲'2','1'和'3'的元素。該值總是這個字典中的一個數字 – GingerDom

回答

2

是的。使用Python,使用heapq.nsmallest

import heapq 
d = <iterable of many key-value pairs> 

def f(pair): return abs(pair[1]-2) 

least10 = heapq(10, d, key=f) 

對於更一般的答案,搜索'n最小'的網頁。 SO上已經有相關的答案。

+0

我總是喜歡它,當我看到一個core-dev來回答。 :-)這比迭代更好,但它可能不像OP(作爲初學者)那樣直觀。 –

相關問題