Python 如何在字典中找到值之间的所有差异?
假设我有一本字典:Python 如何在字典中找到值之间的所有差异?,python,dictionary,Python,Dictionary,假设我有一本字典: dictionary = {'A':3,'B',8,'C',12} 我如何在字典中循环查找每个值之间的差异并保存结果 例如,我想(不需要硬编码)使用上面的字典返回一个字典,如下所示: differences = {'A_minus_B':-5,'B_minus_A':5, 'A_minus_C':-8,'C_minus_A':8, 'C_minus_B':4,'B_minus_C':-4} 我可以硬编码它,但我希
dictionary = {'A':3,'B',8,'C',12}
我如何在字典中循环查找每个值之间的差异并保存结果
例如,我想(不需要硬编码)使用上面的字典返回一个字典,如下所示:
differences = {'A_minus_B':-5,'B_minus_A':5,
'A_minus_C':-8,'C_minus_A':8,
'C_minus_B':4,'B_minus_C':-4}
我可以硬编码它,但我希望我的函数更具动态性,这样我就可以添加更多元素,而不必编写冗长的代码行来合并新元素。一个可行但丑陋的循环解决方案:
differences = dict()
for k1,v1 in dictionary.items():
for k2,v2 in dictionary.items():
if k1==k2: continue
differences[k1 + '_minus_' + k2] = v1-v2
您可以使用生成成对的不同字典项和字典理解来构建差异字典
from itertools import permutations
diff = {f'{ak} - {bk}': av - bv
for (ak, av), (bk, bv) in permutations(dictionary.items(), 2)}
print(diff)
输出
{'A - B': -5, 'A - C': -9, 'B - A': 5, 'B - C': -4, 'C - A': 9, 'C - B': 4}
听写理解怎么样?无需导入,且其可读性相对较高
{f'{k1}_minus_{k2}': d[k1] - d[k2] for k1 in d for k2 in d if k1 != k2}
(如果不在3.6中,请用另一种形式的连接替换f字符串)
输出
{'A_minus_B': -5,
'A_minus_C': -9,
'B_minus_A': 5,
'B_minus_C': -4,
'C_minus_A': 9,
'C_minus_B': 4}