Ich habe zwei Wörterbücher:
%Vor%Ich habe eine Funktion, die diese beiden Wörterbücher als Eingaben verwenden möchte, aber ich weiß nicht, wie ich das machen soll.
Ich habe es versucht:
%Vor%Die wirkliche Funktion wird komplizierter mit vielen Änderungen von zwei Wörterbüchern. Aber die einfache Testfunktion funktioniert bei mir nicht: (
Wenn Sie zwei verschiedene Wörterbücher an eine Funktion übergeben wollen, die beide Argumente für Ihre Funktion enthält, sollten Sie zuerst die beiden Wörterbücher zusammenführen.
Zum Beispiel:
%Vor%Sie müssen also die beiden Wörterbücher zusammenführen. Dazu gibt es mehrere Möglichkeiten: siehe How to zwei Python-Wörterbücher in einem einzigen Ausdruck zusammenführen?
%Vor%Wenn Sie nur zwei Wörterbücher als separate Argumente verwenden möchten, tun Sie einfach
%Vor% Sie verwenden **
nur, wenn Sie die einzelnen Schlüssel / Wert-Paare eines Wörterbuchs als separate Schlüsselwortargumente übergeben möchten. Wenn Sie das gesamte Wörterbuch als einzelnes Argument übergeben, übergeben Sie es einfach genauso wie jeden anderen Argumentwert.
Verwenden Sie *args
, um mehrere Argumente zu übernehmen.
Wenn Sie die Wörterbücher nicht kombinieren möchten, stellen Sie sie als Argumente und nicht als Schlüsselwortargumente zur Verfügung. Setzen Sie ihre Standardwerte auf etwas (zB None
) und konvertieren Sie None
in {}
und kopieren Sie das Wörterbuch .
Ich tue dies oft, wenn ich Schlüsselwortargumente an verschiedene Plotfunktionen übergebe, die innerhalb meiner Funktion aufgerufen werden, und ich sende verschiedene Wörterbücher von Schlüsselwortargumenten an diese Plotfunktionen.
Das Problem ist, dass Ihr Programm eine Mehrdeutigkeit aufweist. Eine sinnvolle Syntax wäre:
%Vor% Grundsätzlich, wenn Sie nach der Interpretation von test(**SP,**CP)
fragen, wird dies direkt als test(key1='value1', key2='value2)
interpretiert. Wörterbücher werden zusammengeführt und da sie dieselben Indizes haben, gehen einige Informationen verloren.
Wenn Sie def test(**SP,**CP)
definieren, weiß Python nicht, wie Sie die Argumente zwischen SP und CP aufteilen wollen. Da es mehrdeutig ist, verweigert es die Ausführung, wenn das Argument "**" nicht das letzte in der Definition ist.
Tags und Links python arguments dictionary