übergeben mehrere Wörterbücher an eine Funktion als Argument

8

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: (

    
scinthx 22.06.2014, 21:08
quelle

7 Antworten

4

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%     
JLT 30.03.2016 13:51
quelle
3

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.

    
BrenBarn 22.06.2014 21:09
quelle
0

Verwenden Sie *args , um mehrere Argumente zu übernehmen.

%Vor%     
Padraic Cunningham 22.06.2014 21:14
quelle
0

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 .

%Vor%

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.

    
Charlie Brummitt 10.02.2017 15:30
quelle
0

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.

    
Anne Aunyme 18.09.2017 12:07
quelle
0

Sie können beide Wörterbücher ( SP und CP ) in einem einzigen mit dem Konstruktor dict kombinieren.

%Vor%     
vjerez 04.01.2018 11:11
quelle
-1
%Vor%

gibt {'a': 1, 'y': 4, 'b': 2, 'x': 3}

    
tanvalley 20.08.2016 15:17
quelle

Tags und Links