在python中,如果值匹配并返回差,则从字典中减去键
我想减去两个dict的键,如果它们的值匹配。其中一张是这样的在python中,如果值匹配并返回差,则从字典中减去键,python,dictionary,Python,Dictionary,我想减去两个dict的键,如果它们的值匹配。其中一张是这样的 dict_one {(2, 2): 38, (2, 6): 51, (4, 9): 29, (5, 1): 53, (6, 6): 91, (6, 9): 105, (7, 6): 66, (8, 4): 74, (8, 8): 89, (9, 6): 115} dict_two {(2, 1): 38, (2, 6): 51, (4, 9): 29, (5, 1): 53, (6, 6): 91, (6
dict_one
{(2, 2): 38,
(2, 6): 51,
(4, 9): 29,
(5, 1): 53,
(6, 6): 91,
(6, 9): 105,
(7, 6): 66,
(8, 4): 74,
(8, 8): 89,
(9, 6): 115}
dict_two
{(2, 1): 38,
(2, 6): 51,
(4, 9): 29,
(5, 1): 53,
(6, 6): 91,
(6, 9): 105,
(7, 6): 66,
(8, 4): 74,
(8, 8): 89,
(9, 6): 115
另一个像这样
dict_one
{(2, 2): 38,
(2, 6): 51,
(4, 9): 29,
(5, 1): 53,
(6, 6): 91,
(6, 9): 105,
(7, 6): 66,
(8, 4): 74,
(8, 8): 89,
(9, 6): 115}
dict_two
{(2, 1): 38,
(2, 6): 51,
(4, 9): 29,
(5, 1): 53,
(6, 6): 91,
(6, 9): 105,
(7, 6): 66,
(8, 4): 74,
(8, 8): 89,
(9, 6): 115
在这里的示例中,结果应该是
result
(1, 0, 0, 0, 0, 0, 0, 0, 0, 0)
基本上,本例中的值
38
将键从(2,2)
更改为(2,1)
。因此,这些值对之间的差异是1
,而两个dict之间的每个其他键保持不变,因此其他键的输出值都是0
如果您正在查找已更改的键,那么看起来您的键值映射顺序是错误的。反转其中一个字典,以便轻松查找给定值的对应元组
然后循环另一个已排序的键值对:
inverted_dict_one = {v: k for k, v in dict_one.items()}
result = [abs(k[1] - inverted_dict_one[v][1] for k, v in sorted(dict_two.items())]
演示:
字典里没有顺序。预期的输出顺序是什么,已排序的键?字典是无序的,因此您可能有办法按适合您的顺序生成键。如果是这样的话,解决办法是显而易见的!如果您是按值匹配的,那么看起来您的字典映射方式不对。如果值是uique,则只需反转字典,然后简单地减去每个键的元组中的第二个值。