我有一个字典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
答案 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()):