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

2024-03-29 10:33:33 发布

您现在位置:Python中文网/ 问答频道 /正文

如果两个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

在这里的例子中,结果应该是

result
(1, 0, 0, 0, 0, 0, 0, 0, 0, 0)

基本上,本例中的值38将键从(2,2)更改为(2,1)。因此,这对值之间的差异是1,而两个dict之间的每个其他键保持相同,因此其他键的输出值都是0。你知道吗


Tags: 字典差异resultonedict例子two本例
1条回答
网友
1楼 · 发布于 2024-03-29 10:33:33

如果您正在查找更改的,那么看起来您的键值映射顺序是错误的。反转其中一个字典,这样就可以轻松地查找给定值的对应元组。你知道吗

然后在另一个的排序的键值对上循环:

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())]

演示:

>>> inverted_dict_one = {v: k for k, v in dict_one.items()}
>>> [abs(k[1] - inverted_dict_one[v][1]) for k, v in sorted(dict_two.items())]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]

相关问题 更多 >