Wenn ein "mydict" nicht leer ist, greife ich auf ein beliebiges Element als zu:
mydict[mydict.keys()[0]]
Gibt es eine bessere Möglichkeit, dies zu tun?
Mit Python 3, nicht-destruktiv und iterativ:
next(iter(mydict.values()))
Unter Python 2, nicht-destruktiv und iterativ:
mydict.itervalues().next()
Wenn Sie wollen, dass es sowohl in Python 2 als auch in 3 funktioniert, können Sie das Paket six
verwenden:
six.next(six.itervalues(mydict))
obwohl es an dieser Stelle ziemlich kryptisch ist und ich deinen Code bevorzugen würde.
Wenn Sie ein Element entfernen möchten, tun Sie das:
key, value = mydict.popitem()
Beachten Sie, dass "first" hier nicht der richtige Begriff ist. Es handelt sich um "jedes" Element, weil dict
kein geordneter Typ ist.
Wie bereits erwähnt, gibt es kein "erstes Element", da Wörterbücher keine garantierte Reihenfolge haben (sie sind als Hashtabellen implementiert). Wenn Sie z.B. den Wert des kleinsten Schlüssels haben wollen, wird thedict[min(thedict)]
das tun. Wenn Sie sich für die Reihenfolge interessieren, in der die Schlüssel eingefügt wurden, d.h. mit "zuerst" meinen Sie "am frühesten eingefügt", dann können Sie in Python 3.1 collections.OrderedDict verwenden, das auch im kommenden Python 2.7 enthalten ist; für ältere Python-Versionen laden Sie den ordered dict backport (2.4 und später) herunter, installieren ihn und verwenden ihn hier.
Python 3.7 Jetzt sind Dicts nach Einfügung geordnet.
Abgesehen von den Problemen mit der diktatorischen Ordnung könnte dies besser sein:
next(dict.itervalues())
Auf diese Weise vermeiden wir die Suche nach Elementen und die Erstellung einer Liste von Schlüsseln, die wir nicht verwenden.
next(iter(dict.values()))