我面前有一个挑战。让我提出令我困惑的挑战——
有两个字典说- D1和D2。这些字典大部分时间都有相同的键,但不能保证它总是相同的。这两个字典可以表示如下 -
D1 = {["R1", 0.7], ["R2",0.73], ["R3", 1.5], ["R4", 2.5], ["R5", 0.12], ["R6", 1.9] , ["R7", 9.8], ["R8", 6.5], ["R9", 7.2], ["R10", 5.6]};
D2 = {["R1", 0.7], ["R2",0.8], ["R3", 1.5], ["R4", 3.1], ["R5", 0.10], ["R6", 2.0] , ["R7", 8.0], ["R8", 1.0], ["R9", 0.0], ["R10", 5.6], ["R11", 6.23]};
在这些字典中,键是字符串数据类型,值是浮点数据类型。从物理上讲,它们是两个不同时间的系统快照。D1 比 D2 早。我需要根据升序对这些字典进行独立排序。完成后将这些字典更改为 -
D1 = {["R5", 0.12], ["R1", 0.7], ["R2",0.73], ["R3", 1.5], ["R6", 1.9], ["R4", 2.5] , ["R10", 5.6], ["R8", 6.5], ["R9", 7.2], ["R7", 9.8]}; D2 = {["R9", 0.0], ["R5", 0.10], ["R1", 0.7], ["R2",0.8], ["R8", 1.0], ["R3", 1.5 ], ["R6", 2.0], ["R4", 3.1], ["R10", 5.6], ["R11", 6.23], ["R7", 8.0]};
这里将字典 D1 中元素的排序作为参考点。D1 的每个元素都与 D1 中的下一个元素相连。预计在 D2 中识别出在排序后出现在参考字典 D1 中的已破坏序列的元素。在确定向 D2 添加元素(即,密钥不存在于 D1 中但存在于 D2 中)和从 D1 中移除元素(即,密钥存在于 D1 中但不存在于 D2)时,将被忽略。即它们不应在结果中突出显示。
例如,继续上面列出的示例,参考 D1(忽略添加和删除)在 D2 中破坏序列的元素是 -
Breakers = {["R9", 0.0],["R8", 1.0]} 因为,R9 已将序列从 D1 排序字典中的第 8 个索引跳转到 D2 排序字典中的第 0 个索引。同样,R8 将序列从 D1 排序字典中的第 7 个索引跳转到 D2 排序字典中的第 4 个索引(所有索引都从 0 开始)。
注意 - ["R11", 6.23] 预计不会出现在断路器列表中,因为它是 D2 的补充。
请建议一种算法以最佳方式实现此目的,因为需要对从具有 3,256,190 条记录的数据库中获取的数据执行此操作。
编程语言不用担心,如果以逻辑为指导,我可以承担用任何语言实现它的任务。