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

标签 python dictionary iteration computation

我有一个字典 dict,每个键有两个值,如下所示:

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

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

我曾尝试使用包含相同数据的两个词典来执行此操作,但没有成功。请注意,我已经对值进行了 float 转换,所以这不是问题所在。这是我尝试过的:

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

关于python - 迭代 Python 中的字典项以执行计算集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31860862/

相关文章:

python - 如何导入 boto3 ssm ParameterNotFound 异常?

python - csv文件到字典

javascript - Angular : how to iterate through all indices in an array except the final index using ng-repeat

c# - 使用 'ReplaceWith' 迭代 XElement 集合仅在我首先使用 'ToList()' 时有效

Python 将小数点限制在特定位置(不是圆形)

Python 3.4 : LXML web scraping

html - 如何在移动设备上禁用 slider 上的图像映射

python - 如何为 spacy NLP 创建字典?

python - 在 Python 中迭代时从列表中删除特定索引

python - 如何使 ConfigParser 返回默认值而不是引发 NoOptionError?