首页 > 解决方案 > 比较 Python 3 中嵌套字典的值

问题描述

我有一些代码使用嵌套字典来保存线性回归的结果。该程序对多组数据(“目标”)运行回归,并将每个目标的回归变量存储为字典,这些字典包含在另一个字典中,使用目标名称作为键,值是字典保存变量。它是这样初始化的(注意这self.targets只是不同目标的列表):

self.results = {}
for keys in self.targets:
    self.results[keys] = {
        'lod': '', 'p': '', 'm': '', 'b': '', 'xr': ''}

在另一个在 for 循环中调用的方法中,该目标的字典中的值被填充:

for tar in targets:
    ...some calculations to produce the values...
    self.results[tar].update(
        'lod': lod, 'p': p, 'm': m, 'b': b, 'xr': xr)

稍后,我想在一个图上绘制不同的回归。为此,我想xr从子词典中找到最大值(xr是绘制每个回归所需的右边界)。

我尝试访问所有xr值,例如self.results[:]['xr']. 那没有用,所以我xr在 for 循环中提取了值:

xrs = []
for tar in self.targets:
    xrs.append(self.results[tar]['xr'])

这样就完成了工作,因为我可以max(xrs)找到最大的价值。不过,我想知道是否有更直接的方法来提取键的最大值'xr',而不必创建一个单独的列表作为中间人。

标签: python-3.xdictionarycomparison

解决方案


生成器理解可能会有所帮助:

data = {
    "a" : {'lod': '', 'p': '', 'm': '', 'b': '', 'xr': 0},
    "b" : {'lod': '', 'p': '', 'm': '', 'b': '', 'xr': 1}
}

max_xr = max(value["xr"] for value in data.values())

print(max_xr)

这应该给你1我的想法。


推荐阅读