遍历 Python 中的字典项以执行多组计算

Iterating over Dictionary Items in Python to perform sets of calculations

我有一个字典 dict 每个键有两个值,像这样:

dict = {}
dict[name] = x1, x2

假设这本词典中有 10 个条目。我想遍历字典的键,以便我针对字典中的其他键值集对每个键值集执行计算。例如,我想从第一个键开始计算 x1_0 + x2_0 - x1_1 + x2_1,其中“_0”表示第一个键的值, “_1”表示与任何其他键的值关联的值。对于所有其他九个密钥,该计算将执行九次。然后我将移动到第二个键值集并针对剩余的九个键执行计算,依此类推。

我试过用两个包含相同数据的字典来做这件事,但没有成功。请注意,我已经对值进行了浮点数转换,所以这不是问题所在。这是我尝试过的:

for (name_0, (x1_0, x2_0)), (name_1, (x1_1, x2_1)) in zip(dict.iteritems(), dict2.iteritems()):
    if name_0 != name_1:
        d = x1_0 + x2_0 - x1_1 + x2_1
    print d

如果我的理解是正确的,你打算对每一副对联进行排列。使用生成的对联对,您将打算执行一些临时计算

设 Pi 中的一个为 (Xi, Xj)其中 Xi 是一个对联 (Xi0, Xi1) 那么公式可以表示为

def calc(x):
    return x[0][0] + x[0][1] - x[1][0] + x[1][1]

要创建成对排列,您可以使用 itertools.permutation,如下所示

permutations(_dict.values(), 2)

现在你只需要用你制定的函数映射对联对

map(calc, permutations(d.values(), 2))

我在初始化 for 循环时最终使用了索引,并且效果很好:

for (dict.keys()[i], dict.values()[i]), (dict2.keys()[j], dict2.values()[j]) in zip(dict.iteritems(), dict2.iteritems()):