在python列表中找到最接近的值对

星际

我有这样的字典:

d = {'ID_1':[(10, 20), (40, 60), (125, 200)], 'ID_2': [(75, 100), (250, 300)]}

以及职位和ID:

pos = 70
IDed = ID_1
output = (40, 60)

pos = 90
IDed = ID_2
expected output = (75, 100)

pos = 39
IDed = ID_1
expected output = (40, 60)

我想在最接近测试的列表中找到值对pos

我已经在下面尝试过了:

if IDed in d:
    y = d[IDed]
    closest = min(y, key=lambda x:abs(x-pos))

这不起作用,因为它不是具有单个值的列表。还有另一种方法可以使用类似的方法来执行此操作。如果没有,我可以通过在列表中建立索引并计算每个值对之间的距离找到解决问题的方法。但是,我认为这不会非常有效。

马0

你真的很亲近 波纹管是一个可行的解决方案。

d = {'ID_1': [(10, 20), (40, 60), (125, 200)], 'ID_2': [(75, 100), (250, 300)]}    
pos = 70
IDed = 'ID_1'

closest = min(d[IDed], key=lambda x: min(abs(y - pos) for y in x)) if IDed in d else None    
print(closest)
# (40, 60)

代码的问题在于,您试图将x - posx作为整个元组(例如(40,60))并pos作为整数目标值。


如果需要多次运行,可以考虑将其包装在函数中以避免代码重复。

def find_nearest(point_dict, id, stigma):
    try:
        return min(point_dict[id], key=lambda x: min(abs(w - stigma) for w in x))
    except:
        return None

d = {'ID_1': [(10, 20), (40, 60), (125, 200)], 'ID_2': [(75, 100), (250, 300)]}
print(find_nearest(d, 'ID_1', 70))
# (40, 60)

请注意,在诸如此类d = {'ID_1': [(10, 20), (40, 69), (71, 200)], ...}情况下,术语在嵌套在初始字典中的列表中出现的顺序很重要术语6971与给定目标等距,70但是代码会返回,(40, 69)因为它首先找到了那个

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python在列表中找到最接近的值

在排序列表中找到最接近/最接近的值

从列表中找到最接近的值?

如何在 Python 中找到最接近数字的值?

Python / Pandas在一列中找到最接近/最接近的值

在列表中找到最接近的点的索引

熊猫在列中找到最接近的值

在列pandas中找到最接近的值

在Matlab中找到最接近的较小值

Python字典列表-在列表中找到最接近新条目的4个条目

如何使用内置函数在列表中找到最接近目标的值?

如何使用numpy在3D数组列表中找到最接近的值?

从列中找到最接近的值,并从相邻列中返回数字(在列表内)

如何从谁的值最接近零的列表中找到两个索引

在列表中找到与给定数字最接近的较小和较大值的最佳方法是什么

在数组中找到最接近给定值的值

Python-从给出的颜色列表中找到最接近颜色的颜色

在列表中找到与给定数字最接近的位置

如何从列表中找到最接近给定Rect的Rect?

我想从列表中找到最接近的较大纸张尺寸

使用谷歌地球引擎在列表中找到最接近的日期

如何从点列表中找到最接近的坐标?

在值表中找到最接近0的正负值

如何在pinescript数组中找到最接近的值?

在JavaScript中找到最接近所需值的数组条目?

Java在集合中找到最接近(或相等)的值

如何从POJO属性中找到Java中最接近的值?

根据日期时间在熊猫中找到最接近的值

在R向量中找到最接近0.50的值