如果值匹配,我想减去两个dicts的键。一个字典看起来像这样
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
,而每个其他键在两个词组之间保持相同,因此其他键的输出值都是0
。
答案 0 :(得分:2)
如果您正在寻找更改的键,那么您的键值映射顺序似乎是错误的。反转其中一个词典,这样您就可以轻松查找给定值的相应元组。
然后遍历另一个的排序键值对:
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]