2017-05-17 7 views
0

Hier ist ein Auszug aus einer meiner Python-Funktionen Iterieren durch:mehrere Werte für ein dict Schlüssel in Python

d = {'ANIMAL' : ['CAT','DOG','FISH','HEDGEHOG']} 
d_list = [] 
for key,value in d.iteritems(): 
    temp = [key, value] 
    d_list.append(temp) 

Wenn ich d_list drucken Sie es zur Zeit gibt mir: Ich

>>>print d_list 
[['ANIMAL', ['CAT', 'DOG', 'FISH', 'HEDGEHOG']]] 

Wie schreiben die Funktion, so dass es mich gibt:

>>>print d_list 
[['ANIMAL', 'CAT'],['ANIMAL', 'DOG'],['ANIMAL', 'FISH'],['ANIMAL', 'HEDGEHOG']] 

Antwort

2

zwei verschachtelten Schleifen kann dies leicht tun -

d = {'ANIMAL' : ['CAT','DOG','FISH','HEDGEHOG']} 
d_list = [] 
for key, values in d.iteritems(): 
    for value in values: 
     d_list.append([key, value]) 

Mit Liste Verständnis -

d_list = [[k,v] for k, values in d.iteritems() for v in values] 

Für Python 3.x, sollten Sie iteritems ändern items

+0

Warum habe ich nicht glaube Liste Verständnis zu verwenden. Es mag erwähnenswert sein, dass sich 'iteritems' in' python3' in 'items' geändert hat. –

+0

Danke Sierr, ich habe das in meiner Antwort hinzugefügt – kuro

+0

Ihr Kommentar hat mir gerade klar gemacht, dass ich den Buchstaben 'a' im ersten Teil meines vergessen habe Name. Ich habe es gerade repariert ... LoL –

0

Dies ist, wie ich es tun würde. Ich würde direkt über den Wert des Schlüssels iterieren.

d = {'ANIMAL' : ['CAT','DOG','FISH','HEDGEHOG']} 

d_list = [] 

for value in d['ANIMAL']: 
    temp = ['ANIMAL',value] 
    d_list.append(temp) 

print (d_list) 

Ergebnis:

[['ANIMAL', 'CAT'], ['ANIMAL', 'DOG'], ['ANIMAL', 'FISH'], ['ANIMAL', 'HEDGEHOG']] 
+0

Ihr Code ist korrekt für Testdaten. Aber es ist besser, Code zu machen, so dass es für mehrere Einträge im Wörterbuch funktioniert – kuro

+0

@Kuro: True. Das OP hat jedoch nicht nach Mehrfachnutzungen gefragt. Ich antwortete nur mit der einfachsten Lösung, die mir für die Frage einfallen würde. –

0

Sie benötigen einen zweiten Schleife:

d = {'ANIMAL' : ['CAT','DOG','FISH','HEDGEHOG']} 
d_list = [] 

for key, values in d.iteritems(): 
    for value in values: 
      temp_list=[key, value] 
      d_list.append(temp) 
Verwandte Themen