2016-07-20 7 views
-2

Ich habe eine Funktion (items), die ein dict (details_dict) zurückgibt und dieses dict in einer anderen Funktion (Inhalt) ausdrucken möchte.Dict in einer Funktion zurückgeben, dann den Inhalt in einer anderen Funktion drucken

Der Inhalt details_dict nach der for-Schleife sein:

details_dict = { 
'car' : 'fast', 
'bike' : 'faster', 
'train' : 'slow' 
} 

Hier sind die beiden Funktionen i implementiert sind, aber ich bin nicht sicher, ob sie richtig sind.

def items(root): 
    for a in list: # example for loop, not important but details_dict is created here 
     details_dict = ['name' : 'state'] 
    return details_dict 

def contents(root): 
    for name, state in details_dict.items(): 
     print ("%s is set to %s" % (name, state) 
+1

Ist details_dict bereits erstellt? Wenn ja, warum wird es (wenn auch falsch) in der Elementfunktion neu erstellt? Was macht die Artikelfunktion? – Samuel

+0

Nein, es ist nicht, es ist in Elementen (root) über eine for-Schleife erstellt, il bearbeiten Sie die Frage – zubinp

+4

* Ich bin mir nicht sicher, ob sie richtig sind. * - [Probieren Sie es und siehe] (https://repl.it/CeJY/0). Funktioniert es? Was macht es, anstatt zu arbeiten? – TessellatingHeckler

Antwort

0

Es gibt eine fehlende Klammer in Ihrer Print-Anweisung und mögliche Einrückungsprobleme. Hier ist eine modifizierte Version von dem, was Sie tun, ohne auf die Details, wie die dict gebaut:

def buildItems(): 
    return { 
     'car': 'fast', 
     'bike': 'faster', 
     'train': 'slow' 
    } 

def contents(): 
    details_dict = buildItems() 
    for name, state in details_dict.items(): 
     print ("%s is set to %s" % (name, state)) 

contents() 

Ausgänge:

car is set to fast 
train is set to slow 
bike is set to faster 

Wenn das, was Sie wollen, dass es zu tun, es funktioniert. Sie können das in einer anderen Funktion erstellte Diktat erfolgreich aus der Funktion contents() drucken.

+0

Beachten Sie, dass dict's in Python die Reihenfolge nicht erhält. Wenn Sie die Reihenfolge beibehalten müssen, versuchen Sie stattdessen [OrderedDict] (https://pymotw.com/2/collections/ordereddict.html) – voodoodrul

0

Ohne die Struktur Ihrer Daten zu kennen, habe ich eine Vermutung gemacht.

list_a = ['car', 'bike', 'train'] 
list_b = ['fast', 'faster', 'slow'] 

def items (one, two): 
    the_dict = {} 
    for (i,j) in zip(one, two): 
     the_dict[i] = j 
    return the_dict 

def contents(a_dict): 
    for key in a_dict: 
     print 'The key ' +key+ ' is assigned to '+a_dict[key] 

details_dict = items(list_a, list_b) 

contents(details_dict) 

die Ausgänge:

The key car is assigned to fast 
The key train is assigned to slow 
The key bike is assigned to faster 
Verwandte Themen