2016-11-10 4 views
0

Ich versuche, die zweite Spalte (erster Index) in einem Wörterbuch ähnlich iterieren zu:Iterate über eine bestimmte Spalte in einem Wörterbuch in Python

dict = { 
"Me": [("Blue", 37, 1, 2, "up", "left")], 
"You": [("Green", 03, 3, 4, "up", "right"), 
    ("Red", 29, 5, 6, "down", "right"), 
    ("Yellow", 35, 7, 8, "straight", "down")], 
"Them": [("Black", 08, 9, 10, "up", "up"), 
    } 

und dem größten Wert retrun. Was ich habe ist:

for c in dict[1:2]: 

    x = 0 

    if c > x: 

     x = c 

return x 

Ich bekomme eine nicht ausbesserbare Art Fehler. Ich weiß, es hat etwas damit zu tun, wie der Code über das Wörterbuch iteriert, aber ich bin fest, wie man es beheben kann. Sprache ist Python. Was ist hier falsch? Jede Hilfe wird sehr geschätzt!

+0

'dict's nicht Sequenzen sind, können Sie sie nicht indizieren, und man kann sie mit Sicherheit nicht schneiden. Und in der Tat haben sie keine "Spalten". –

Antwort

0

Haben Sie versucht, mit dict.iteritems() über Schlüssel/Wert-Paare zu iterieren?

ex:

for key, val in dic.iteritems(): 
    print "Key: " + str(key) + "\t Value:" + str(val) 
0

1:2 ist ein Stück Objekt, das unhashable ist, was Sie wollen, stattdessen ist so etwas wie dieses:

max(d[1] for l in dict.values() for d in l) 
0

Erste, STOP reserviert Namen (wie dict) für Ihre Variablen

Zweitens, indem Sie mydict [1: 2] schreiben, fordern Sie den Wert aus dem Wörterbuch an, das sich auf das Element mit dem Schlüssel 1: 2 bezieht, was der Slice Operato ist r. Jetzt kann der Slice-Operator kein Schlüssel in einem Dictionary sein (es gibt keine Hash-Funktion, die den Operator übernimmt und einen numerischen Wert zurückgibt, der als Index im Werte-Array verwendet wird). Sie sollten also den Slice-Operator in der Liste der Schlüssel und Wertelisten oder in der Liste der Elemente verwenden - Listen, die eine Reihenfolge haben und es sinnvoll ist, Slices auf ihnen zu haben (das Wörterbuch hat nicht garantiert dasselbe) Reihenfolge nach der Änderung)

Drittens, warum setzen Sie das x in jeder Iteration in der for-Schleife auf 0?

Und viertens, könnten Sie dies tun:

for value in mydict.values(): 
    (a, b, c, d, e, f) = value[0] 
    print(b) 
Verwandte Themen