迭代Python中的字典项以执行计算集

时间:2015-08-06 16:16:42

标签: python dictionary iteration computation

我有一个字典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

2 个答案:

答案 0 :(得分:1)

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

让一对P i 为(X i ,X j )其中X i 为对联(X i0 ,X i1 )然后表达式可以表示为

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

答案 1 :(得分:0)

我在初始化for循环时最终使用了索引,这非常有效:

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