2016-11-27 13 views
0

私のPython関数:私は私が行う場合は、その出力Pythonの結果

だかを理解するには、Javaでそれを再現することはできません

def searchMAX(Dict): 
    v=list(Dict.values()) 
    return list(Dict.keys())[v.index(max(v))] 

myDico ={0:0.0} 
myDico.update({1:1.2}) 
myDico.update({2:11.2}) 
myDico.update({3:17.2}) 
myMax = searchMAX(myDico) 
print(*myMax, sep='\n') 

私はこのエラーを持っている:

TypeError: print() argument after * must be an iterable, not int 

print(myMax, sep'\n')のみ再実行リスト:(?その後

return list(Dict.keys())[v.index(max(v))] 

が作る

v = list(Dict.values()) 

v

Dictの値とassingsそれを超える反復子のリストを作る:

+0

これは 'max(Dict.items()、key = lambda item:item [1])[0]'と同じです。 – Daniel

+0

@ das-g、私はそれを修正しましたが、元の関数を書き込んでいませんでした。 –

答えて

2

Dictが、その後のPython dictであると仮定すると、 Dictのキーのリストは、最大値を持つキーを返します最大値(v.index(max(v)))のインデックスを見つけてリスト上のそのインデックスを使用して、に関連付けられた値を返します。

したがってsearchMAXは、あなたのケースでは常に整数であり、*でprint()に渡すことはできません。

print(Max, sep='\n') 
+0

'*'と '**'を説明している良い答えは、[ここ]です(http://stackoverflow.com/questions/36901/what -does-double-star-and-star-do-for-parameters#36908)。 – daphtdazz

+0

そして私がもっと理解すれば、それはインデックスだけを返しますか?コードに見られるようなリストではありませんか? –

+0

@HarryCotteいいえキーを返します。そのキーは、{3:17.2}の整数 '3'です。 – Anthon