2016-12-07 3 views
-2

Ich habe es versucht, aber ich kann das bisher nicht herausfinden. Ich möchte eine Liste von Tupeln erstellen, die jeweils aus Wörterbuch Werten aufgebaut:Erstellen eines Tupels aus * args

my_list = [(x['field1'], x['field2']) for x in my_dict] 

Aber das Problem ist, dass ich dies in einer Funktion machen wollen, die Felder vorbei I * args erhalten möchten:

my_func('field1', 'field2') 

Wie kann ich das erste Listenverständnis aus der * args-Liste erstellen?

Danke!

Ich werde versuchen zu klären:

Kurz gesagt, was ich will, ist, dies zu tun Karte:

my_func('field1', 'field2') 

Um dies:

tuple(x['field1'], x['field2']) 

die eine Aussage innerhalb my_func sein (* Argumente)

+1

nicht so klar, was Sie tun möchten. Können Sie ein oder zwei Beispiele für die gewünschte Eingabe/Ausgabe angeben? – Dekel

+0

Unklar ... was ist 'mein_dict' in diesem ... eine Liste von Wörterbüchern? Möchtest du von jedem Element von 'my_dict' ein anderes Feld bekommen? – donkopotamus

+0

Wie genau fragen Sie? Tupel aus Funktionsargumenten erstellen? Sie wollen also Funktion, die Tupel zurückgibt? – pagep

Antwort

1

Sie können eine tuple, indem Sie ein anderes Verständnis über die args erstellen:

def my_func(*args): 
    return [tuple(x[arg] for arg in args) for x in my_dict] 

Allerdings setzt dies voraus, dass Ihr my_dict eine globale Variable ist. Aber jetzt können Sie es so nennen, wie Sie es mit my_func('field1', 'field2') angegeben haben.

Ich würde Ihnen raten, das Wörterbuch der Definition der Funktion hinzuzufügen:

def my_func(my_dict, *args): 
    return [tuple(x[arg] for arg in args) for x in my_dict] 

und nennen es als my_func(my_dict, 'field1', 'field2')

+0

Es ist in Ordnung, in der Tat ist die Funktion komplexer und enthält die Wörterbuch. Ich habe es einfacher gemacht, also ist die Frage klarer. Danke noch einmal! – Ivan

0

Beziehen Sie sich einfach auf diese Argumente als normal:

def f(d, a, b): 
    return [(x[a], x[b]) for x in d] 

result = f(my_dict, 'field1', 'field2') 
Verwandte Themen