Skip to main content
 首页 » 编程设计

python之查找值最接近某个值的 k 个 dict 项

2025年05月04日8exmyth

假设我们要找到其值最接近 10 的 2 个项目:

A = {'abc': 12.3, 'def': 17.3, 'dsfsf': 18, 'ppp': 3.2, "jlkljkjlk": 9.23} 

适用于:

def nearest(D, centre, k=10): 
    return sorted([[d, D[d], abs(D[d] - centre)] for d in D], key=lambda e: e[2])[:k] 
 
print(nearest(A, centre=10, k=2)) 

[['jlkljkjlk', 9.23, 0.7699999999999996], ['abc', 12.3, 2.3000000000000007]]

但是当 dict 的大小(数十万个项目)大得多时,是否有 Python 内置方法和/或更优化的版本来执行此操作?

请您参考如下方法:

如果您不介意使用 Pandas:

import pandas as pd 
closest = (pd.Series(A) - 10).abs().sort_values()[:2] 
#jlkljkjlk    0.77 
#abc          2.30 
closest.to_dict() 
#{'jlkljkjlk': 0.7699999999999996, 'abc': 2.3000000000000007}