对元组求和时输出变量名

Output variable names when summing a tuple

具有指定值的变量列表。我想 return 每对(每两个)的所有可能组合。

打印输出的是对的名称,以及它们的总和。

例如:

(Mike, Kate) 7

我在下面试过了。结果出来了,但不是对的名字:

import itertools
    
Mike = 3
Kate = 4
Leo = 5
David = 5

data = [Mike, Kate, Leo, David]

for L in range(0, len(data)+1, 2):
    for subset in itertools.combinations(data, L):
        if len(subset) == 2:
            print (subset,sum(subset))              ---- (3, 4) 7
            # print (''.join(subset),sum(subset))   ---- doesn't work
        

正确的做法是什么?谢谢。

如果您使用 dict 而不是命名变量,则可以通过字典查找轻松地将名称本身转换为 int 值。

import itertools
    
data = {
    'Mike': 3,
    'Kate': 4,
    'Leo': 5,
    'David': 5,
}

for subset in itertools.combinations(data, 2):
    print(subset, sum(data[name] for name in subset))
('Mike', 'Kate') 7
('Mike', 'Leo') 8
('Mike', 'David') 8
('Kate', 'Leo') 9
('Kate', 'David') 9
('Leo', 'David') 10