Python从嵌套字典中提取最大值

Pet*_*ete 4 python dictionary

我有一个表格的嵌套字典:

 {'2015-01-01': {'time': '8', 'capacity': '5'}, 
  '2015-01-02': {'time': '8', 'capacity': '7'},
  '2015-01-03': {'time': '8', 'capacity': '8'} etc}
Run Code Online (Sandbox Code Playgroud)

使用dictreader从csv文件创建字典.我希望能够做的是返回容量的最大值.所以在这种情况下8.

我可以用:

for k,v in input_dict.items():
    if temp_max < int(v['capacity']):
        temp_max = int(v['capacity'])
Run Code Online (Sandbox Code Playgroud)

哪有效,但我想知道是否有更简洁的方法?我搜索并找到了提取与最大值相关的顶级键的方法,这当然不是我需要的.见下文:

max(input_dict, key=lambda v: input_dict[v]['capacity'])
Run Code Online (Sandbox Code Playgroud)

这将返回'2015-01-03',所以我想有一个简单的模型,上面的一个班轮将给我我需要的但是让我难过!

有任何想法吗?

bru*_*ers 7

你要

max(int(d['capacity']) for d in input_dict.values())
Run Code Online (Sandbox Code Playgroud)

说明:

如果您不关心键,只需迭代嵌套的dicts(IOW外部字典的值)

你的内部dicts"容量"值也存储为字符串,我假设你想测试整数值.要找出差异,请检查以下内容:

>>> max(["1", "5", "18", "01"])
'5'
>>> max([1, 5, 18, 01])
18
>>> 
Run Code Online (Sandbox Code Playgroud)

  • 过于严格的是,这会返回“int”修改后的值,其中原始值是一个字符串。 (2认同)