【问题标题】:Calculate max in a nested dictionary在嵌套字典中计算最大值
【发布时间】:2023-01-13 18:41:31
【问题描述】:

我有一个这样的嵌套字典:

time_values = {
    "A": {
        "time": {
                    "B": 2,
                    "C": 3,
                    "D": 5
                }
         },
    "B": {
        "time": {
                    "A": 7,
                    "C": 2,
                    "D": 3
                }
         },
    "C": {
        "time": {
                    "A": 8,
                    "B": 9,
                    "D": 2
                }
         },
    "D": {
        "time": {
                    "A": 7,
                    "B": 2,
                    "C": 3
                }
         }
    }

我想计算所有时间中的最大值。 我认为这里的问题是字典中唯一的公共键是time,所有其他的都可以改变,因为它们是 2 点之间的旅行时间。

最初的代码是:

max_time = 0

for station in time_values:
    for other_station in time_values[station]["time"]:
        if time_values[station]["time"][other_station] > max_time:
            max_time = time_values[station]["time"][other_station]

但我想以更好的方式使用字典使其更像 pythonic。

我正在尝试这样的事情:

time_list = []

for _, b in time_values.items():
    time_list.append(list(b.get("time").values()))

max_value = max(list(itertools.chain(*time_list)))

但我不确定它是否是一个“更好”的代码......

任何的想法?

【问题讨论】:

    标签: python-3.x dictionary


    【解决方案1】:

    找到每个子项的最大值,然后找到所有这些项的最大值的单线。

    print(max([max(v['time'].values()) for v in time_values.values()]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 2019-02-06
      相关资源
      最近更新 更多