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

2024-04-29 19:17:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个嵌套字典,其形式如下:

 {'2015-01-01': {'time': '8', 'capacity': '5'}, 
  '2015-01-02': {'time': '8', 'capacity': '7'},
  '2015-01-03': {'time': '8', 'capacity': '8'} etc}

字典是使用dictreader从csv文件创建的。我想做的是返回容量的最大值。所以在这个例子中是8。在

我可以使用:

^{pr2}$

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

max(input_dict, key=lambda v: input_dict[v]['capacity'])

它会返回'2015-01-03',所以我想有一个简单的mod到上面的一个行程序,它会给我我所需要的,但是它让我难堪!在

有什么想法吗?在


Tags: csv方法input字典timeetc顶级dict
3条回答

你想要吗

max(int(d['capacity']) for d in input_dict.values())

说明:

如果不关心键,只需迭代嵌套的dict(看看外部dict的值)

你也可以假设你的内码是“你想存储的整数”。要找出差异,请检查以下内容:

^{pr2}$

按容量取每个数字,检查最大值:

>>> myDict =  {'2015-01-01': {'time': '8', 'capacity': '5'}, 
  '2015-01-02': {'time': '8', 'capacity': '7'},
  '2015-01-03': {'time': '8', 'capacity': '8'} }
>>> max_capacity = max([int(i['capacity']) for i in myDict.values()])
>>> max_capacity
8

你可以用一种很无聊的方式

print max(input_dict.items(), key=lambda v: int(input_dict[v[0]]['capacity']))[1]['capacity']

但是等等,为什么这个max(input_dict, key=lambda v: input_dict[v]['capacity'])不起作用{}原因是

当您调用max(input_dict, key=lambda v: input_dict[v]['capacity'])时,会调用input-dict-dicts键,因此您得到的输出是key with highest capacity

注意事项:

  • 我在max函数中所做的是调用dictionariesitem函数,这个函数returns the key and value in List of set因为我使用了一个集合列表作为测试样本,我将从max函数中得到一个集合作为输出。

  • 第一个值是key,第二个值是value

  • {p{1>的值是的两个值,所以你可以用一个来得到一个值

相关问题 更多 >