列表字典的最大/最小值

时间:2013-02-14 21:29:05

标签: python

我有一个将id_映射到数据值列表的字典,如下所示:dic = {id_ : [v1, v2, v3, v4]}。 我试图遍历字典中的每个值并检索列表映射的某个索引的最大值/最小值。

我想做的是这样的事情:

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

......但显然这不起作用。是否可以像上面那样在一行中做到这一点?

2 个答案:

答案 0 :(得分:8)

您需要使用以下内容:

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

由于您未使用keys,只需使用dict.values()即可获取值。

答案 1 :(得分:1)

使用generator expressionmax()

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()会在字典的值上返回iterator而不会创建副本,因此比values()更有效(在Python< 3中) )。