Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如果值匹配并返回差,则从字典中减去键_Python_Dictionary - Fatal编程技术网

在python中,如果值匹配并返回差,则从字典中减去键

在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的键,如果它们的值匹配。其中一张是这样的

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,则只需反转字典,然后简单地减去每个键的元组中的第二个值。