2017-09-16 7 views
0

最大値を持つ変数を返そうとしています。しかし、変数が共通の値を持つ場合、max()は1つの値しか返しません。彼女のEISは、私が得たもの:関数が最大値python3を1つ返すのはなぜですか?

>>> d = {'x1':2,'x2':2} 
>>> max(d, key=d.get) 
'x2' 

1は、両方の変数の値を見ることができるようにmax()は一つの変数だけではなく、両方の大きな値として出力を返して、2です。

max()は複数の最大値を返すことができますか?

+0

'max'が複数の値を返すことはできませんが。それを行う関数が必要な場合は、自分で書き込む必要があります。 – Barmar

答えて

0

あり、このためで構築されたものは何もありませんが、あなたはmaxがない同じ戦略使用することができます。

def max_all(iterable, *, key): 
    it = iter(iterable) 
    max_values = [next(it)] 
    max_key = key(max_values[0]) 

    for x in it: 
     x_key = key(x) 

     if x_key > max_key: 
      max_values = [x] 
      max_key = x_key 
     elif x_key == max_key: 
      max_values.append(x) 

    return max_values 

demo

関連する問題