2016-10-28 5 views
2

In meinem Code zu einem dict for-Schleife Ich habe ... und ich gewünschte Ausgabe erhalten, wie untenFOR-Schleife mit bedingtem Strings

.. gezeigt
dict = {"apple":5,"banana":3, "mangos":2} 
columns = ('apple', 'banana','mangos') 
for column in columns: 
    value = dict.get(column) 
    print column,value 

Ausgang:

apple 5 
banana 3 
mangos 2 

Aber wenn mein dict Änderungen

dict = {"apple":5,"Oranges":3, "mangos":2} 

das gleiche für Schleife würde mir folgende Ausgabe

columns = ('apple', 'banana','mangos') 
for column in columns: 
    value = dict.get(column) 
    print column,value 

Ich bekomme folgende, die

apple 5 
banana None 
mangos 2 

erwartet wird nun die Frage ist, gibt es eine Möglichkeit, die Spaltenschleife einstellen

columns = ('apple', 'banana','mangos') 

, so dass der zweite Wert ‚Banane‘ könnte sei entweder 'Banane' oder 'Orange'?

+1

was würden Sie die Ausgabe wollen im zweiten Beispiel sein? –

+2

Warum müssen Sie die Spalten vordefinieren und nicht nur über die dict keys iterieren? Dann ist es "Banane", wenn das Diktat "Bananen" oder "Orange" enthält, wenn es "Orange" als Schlüssel enthält. –

+0

@ Ev.Kounis Vielleicht, weil die Reihenfolge wichtig ist, in diesem Fall wäre ein 'OrderedDict' der richtige Weg – brianpck

Antwort

3
dict = {"apple":5,"oranges":3, "mangos":2} 
columns = ('apple', 'banana' , 'oranges','mangos') 
for column in columns: 
    value = dict.get(column) 
    if value: 
     print(column,value) 

Überprüfen Sie, ob der Wert ist oder nicht, und dann ausdrucken oder OrderedDict, dann ist es zu viele gute Antworten, können Sie überprüfen, ob in der dict ‚Orangen‘ oder ‚Banane‘ hat und dann columns basierend ändern auf was du findest.

dict = {"apple":5,"oranges":3, "mangos":2} 
if 'banana' in dict: 
    columns = ('apple', 'banana','mangos') 
else: 
    columns = ('apple', 'oranges','mangos') 
for column in columns: 
    value = dict.get(column) 
    print(column,value) 

Edited if 'banana' in dict wegen Ev zu verwenden. Kounis Kommentar! Vielen Dank.

+1

Ich denke, es wäre besser für den Scheck zu sein, wenn "Banane" nicht in dict "da es möglicherweise dort mit einem Wert, der eine Bool von hat Falsch wie 0 zum Beispiel. Auch der Name "dict" ist zu vermeiden, da es den eingebauten –

+0

Schatten verbirgt. Oh wahr! Ich habe das vergessen, immer noch blöd früh, wo ich wohne, danke, dass ihr uns aktualisiert. – MooingRawr

+0

Danke Leute. Das hat gut funktioniert –

0
d = {"apple":5,"banana":3, "orange":2} 
c = ('apple', 'banana','mangos') 

# print direct values 
for k, v in d.items(): 
    print k, v 

# print any values of the predefined columns + additionnal ones 
ext = set(list(c) + d.keys()) 
for col in ext: 
    print col, d.get(col) 

Ouput 1:

Orange 2

Apfel 5

Banane 3

Ouput 2:

orange 2

Mangos Keine

Apfel 5

Banane 3