4

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

我想做的是这样的:

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

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

4

2 回答 2

9

你需要像这样使用它:

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

因为你没有使用你的keys,所以只需使用dict.values()来获取值。

于 2013-02-14T21:32:21.213 回答
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 中)更有效。

于 2013-02-14T21:41:17.613 回答