【发布时间】:2016-09-09 03:11:20
【问题描述】:
假设您有两个现有的字典 A 和 B
如果您已经从字典 A 和 B 中分别选择了值 A1 = 1.0 和 B1 = 2.0 的初始两个项目,有没有办法在字典 A 和B 与 A1 和 B1 有不同的值(即 A2 和 B2),并且还会最小化 (A2-A1)**2 + (B2-B1)**2 的值?
字典中的项目数不固定,可能超过100,000。
编辑 - 这很重要:A 和 B 的键相同,但与 A 和 B 中的键对应的值不同。特定的键选择将产生一个有序对 (A1,B1),它不同于任何其他可能的顺序对 (A2,B2)——不同的键具有不同的顺序对。例如,A 和 B 都将具有键 3,4,这将为字典 A 和 2.0 生成 1.0 的值 B。然后将这个键与所有其他可能的键进行比较,以找到另一个有序对(即A 和B 中项目的键和值),以最小化它们之间的平方差。
【问题讨论】:
-
您的问题不完整。你关心 A2 和 B2 对应的键是什么吗?你只需要价值观吗?如果 A2 & B2 出现多次,是否需要返回所有键的列表?不过,Ozgur(他似乎已经删除了他的评论)走在正确的轨道上,您将按值排序。
-
@MaxWen 我不一定指定键本身是什么,因为它们可能会有所不同。它们通常是
j,k形式的有序对,其中 j 和 k 是整数,但这不是我的问题的严格要求。更通用的方法将不胜感激。最重要的是在字典中找到值接近但不相同的项目。寻求从A和B返回具有最接近A1和B1的值的两个键。是的,我在想某种排序方法是必要的,但任何特别有效的方法都会非常有帮助。 -
@MaxWen 添加,字典中的所有键都是已知的。尽管寻找值最接近上述 A1 和 B1 的项(即其键和值)。我还进行了编辑,因为在比较过程中考虑的键是相同的,所以没有选择的键可以给出与 A2 和 B2 相同的两个值。如果这样更清楚,我可以提供一个例子。
标签: python python-2.7 dictionary