擅长:python、mysql、java
<p>你真的很亲密。波纹管是一种有效的解决方案。在</p>
<pre><code>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)
</code></pre>
<p>代码的问题是,您试图使用<code>x - pos</code>作为整个元组(例如,(40,60)),而<code>pos</code>是整目标值。在</p>
<hr/>
<p>您可以考虑将其包装在函数中,以避免代码重复,以防需要多次运行它。在</p>
^{pr2}$
<p>请注意,术语在嵌套在初始字典中的列表中的出现顺序对于例如<code>d = {'ID_1': [(10, 20), (40, 69), (71, 200)], ...}</code>这样的情况非常重要。术语<code>69</code>和<code>71</code>与给定目标<code>70</code>等距,但代码返回<code>(40, 69)</code>,因为它发现<strong>首先</strong>。在</p>