2016-03-31 2 views
-1

ich ein Wörterbuch so machen wollen, dass der Wert des ersten Index ist eine Liste der Zeichenfolge wie folgt zusammen:Wert im Wörterbuch drucken möchten, in der Typenliste ist

class Test(object): 
    def __init__(self): 
     self.adjs = {} 

    def printing(self): 
     adjs = {1:['John', 'Mike', 'Alli'], 2:['Alice'], 3:['Bob']} 
     for i in adjs[0]: 
      print i, adjs[0][i] 

if __name__ == '__main__': 
    obj = Test() 
    obj.printing() 

Wenn ich nur die Liste drucken möchten in des ersten Index gespeichert, dh adjs[0], bekomme ich kein Ergebnis !! Ich glaube, Python's Wörterbuch ermöglicht Ihnen, ein solches Wörterbuch zu verwenden, in dem die Werte eine Liste von Strings sein können. Habe ich recht?

+2

Es gibt keinen "ersten" Index in einem ' dict ', da ein' dict' seine Schlüssel nicht in einer garantierten Reihenfolge speichert. 'adjs [0]' existiert nicht, weil Sie niemals '0' als Schlüssel hinzugefügt haben. – chepner

+0

Für die gewünschte Funktionalität könnte Ihnen eine andere Datenstruktur helfen. Ein Diktat sollte nicht so funktionieren. – Dzhao

+1

Verwenden Sie ein [OrderedDict] (https://docs.python.org/2/library/collections.html#collections.OrderedDict) –

Antwort

-1

Korrekte adjs [0], [diktiert] sollte [1] sein hinzufügen len für wissen Länge dict und Bereich für iter. weil Sie Array von Liste adjs nennen bleiben [1] [NUMBER INT DER LIST]

Sie zum Beispiel:

class Test(object): 
    def __init__(self): 
     self.adjs = {} 

    def printing(self): 
     adjs = {1:['John', 'Mike', 'Alli'], 2:['Alice'], 3:['Bob']} 
     for i in range(len(adjs[1])): # Change by 1, because you key is 1:.... 
      print i, adjs[1][i] 

a = Test() 
a.printing() 
>>>0 John 
>>>1 Mike 
>>>2 Alli 

oder

dictt = {1: [99,44,77], 2:[33,66,66]} 
mylist= [value for key, value in dictt.iteritems()] 
print mylist 
>>>[[99, 44, 77], [33, 66, 66]] 
print mylist[0] 
>>>[[99, 44, 77]] 
print mylist[0][0] 
>>>99 
Verwandte Themen