python 3 Map / Lambda-Methode mit 2 Eingängen

8

Ich habe ein Wörterbuch wie das Folgende in Python 3:

%Vor%

Ich möchte alle Werte mit int map function in int umwandeln, und ich habe so etwas geschrieben:

%Vor%

aber der Python beschwert sich:

  

TypeError: () fehlt 1 benötigtes Positionsargument: 'val'

Meine Frage ist, wie kann ich eine lambda -Funktion mit zwei Eingaben schreiben (zB key und val)

    
Mohammadreza 24.10.2014, 07:28
quelle

1 Antwort

17

ss.items() ergibt eine Iterable, die bei jeder Iteration Tupel liefert. In Ihrer lambda -Funktion haben Sie definiert, dass sie zwei Parameter akzeptiert, aber das Tupel wird als einzelnes Argument behandelt. Daher muss kein Wert an den zweiten Parameter übergeben werden.

  1. Sie können es so beheben

    %Vor%
  2. Wenn Sie die Schlüssel trotzdem ignorieren, verwenden Sie einfach ss.values() wie folgt

    %Vor%
  3. Sonst wie von Ashwini Chaudhary vorgeschlagen , mit itertools.starmap ,

    %Vor%
  4. Ich würde den List-Verständnis-Weg bevorzugen

    %Vor%

In Python 2.x hättest du das so machen können

%Vor%

Diese Funktion wird Tupel-Parameter-Entpacken genannt. Aber das ist in Python 3.x entfernt. Lesen Sie mehr darüber in PEP-3113

    
thefourtheye 24.10.2014, 07:39
quelle