Die Schlüssel eines Diktats werden in einer Hashtabelle gespeichert, so dass ihre "natürliche Ordnung", d. H. Pseudozufällig, ist. Jede andere Bestellung ist ein Konzept des Verbrauchers des Diktats.
sortierte() gibt immer eine Liste, kein Diktat zurück. Wenn Sie eine dict.items() übergeben (die eine Liste von Tupeln erzeugt), wird eine Liste von Tupeln [(k1, v1), (k2, v2), ...] zurückgegeben, die in einer Schleife verwendet werden können in gewisser Weise wie ein Diktat, aber es ist nicht in jedem Fall ein Diktat!
foo = {
'a': 1,
'b': 2,
'c': 3,
}
print foo
>>> {'a': 1, 'c': 3, 'b': 2}
print foo.items()
>>> [('a', 1), ('c', 3), ('b', 2)]
print sorted(foo.items())
>>> [('a', 1), ('b', 2), ('c', 3)]
Die folgende fühlt sich wie ein dict in einer Schleife, aber es ist nicht, es ist eine Liste von Tupeln in k ausgepackt zu werden, v:
for k,v in sorted(foo.items()):
print k, v
ungefähr äquivalent zu:
for k in sorted(foo.keys()):
print k, foo[k]
Verwenden Sie '.items()' anstelle von 'iteritems()': Wie @Claudiu sagte, funktioniert iteritems nicht für Python 3.x, aber 'items()' ist in Python 2.6 verfügbar. – Remi
Dies ist nicht offensichtlich. Tatsächlich erstellt 'items()' eine Liste und verwendet daher Speicher, während 'iteritems()' im Wesentlichen keinen Speicher verwendet. Was zu verwenden ist, hängt hauptsächlich von der Größe des Wörterbuchs ab. Darüber hinaus kümmert sich das automatische Konvertierungswerkzeug Python 2 zu Python 3 ('2to3') automatisch um die Umwandlung von' iteritems() 'nach' items() ', so dass Sie sich darüber keine Gedanken machen müssen. – EOL
Ist es möglich, es zu optimieren, wenn sowohl getitem als auch sortierte Iteration sehr häufig benötigt werden? – HoverHell