4

id_を次のようなデータ値のリストにマッピングする辞書がありますdic = {id_ : [v1, v2, v3, v4]}。ディクショナリ内のすべての値を反復処理して、リストマッピングの特定のインデックスの最大/最小を取得しようとしています。

私がやりたいのは次のようなものです。

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

...しかし、明らかにこれは機能しません。上記のように1行でこれを行うことは可能ですか?

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()を返すため、 (Python <3の場合)よりも効率的です。values()

于 2013-02-14T21:41:17.613 に答える