字典中列表的最大/最小值

4 投票
2 回答
8904 浏览
提问于 2025-04-17 15:55

我有一个字典,它把一个id_映射到一组数据值,像这样:dic = {id_ : [v1, v2, v3, v4]}

我想遍历字典里的每个值,并找出某个列表中指定位置的最大值和最小值。

我想做的事情大概是这样的:

maximum = max([data[0], ??) for id_, data in self.dic.items()])

...但显然这样做是行不通的。有没有办法像上面那样用一行代码实现呢?

2 个回答

1

使用一个生成器表达式max()函数:

In [10]: index = 0

In [11]: dictA = { 1 : [22, 31, 14], 2 : [9, 4, 3], 3 : [77, 15, 23]}

In [12]: max(l[index] for l in dictA.itervalues())
Out[12]: 77

注意:itervalues()会返回一个字典值的迭代器,而不会生成一个副本,因此比values()(在Python 3之前)更高效。

9

你需要像这样使用它:

maximum = max(data[0] for data in dic.values())

因为你没有用到你的 keys,所以直接用 dict.values() 来获取值就可以了。

撰写回答