Ich versuche, mein Programm "banana"
aus dem Wörterbuch auszudrucken . Was wäre der einfachste Weg, dies zu tun?
Das ist mein Wörterbuch:
prices = {
"banana" : 4,
"apple" : 2,
"orange" : 1.5,
"pear" : 3
}
python
dictionary
Slagoy
quelle
quelle
to print out banana with a FOR loop, so when I run it, each key would also be printed out
Meinst dufor k in prices: print k
? Dadurch werden alle Schlüssel im Wörterbuch ausgedruckt.Antworten:
In einer Python-Version, in der Diktate tatsächlich bestellt werden, können Sie dies tun
Für die Bestellung von Dicts benötigen Sie Python 3.7+ oder 3.6+, wenn Sie sich auf die technisch und implementierungsdetailmäßig geordnete Art von Dicts in Python 3.6 verlassen können.
Für frühere Python-Versionen gibt es keinen "ersten Schlüssel".
quelle
next(iter( my_dict.items() ))
Ein Wörterbuch ist nicht indiziert, aber in gewisser Weise geordnet. Folgendes würde Ihnen den ersten vorhandenen Schlüssel geben:
quelle
list(my_dict)[0]
da die Liste der Schlüssel trotzdem abgerufen wird?Update: Ab Python 3.7 wird die Einfügereihenfolge beibehalten, sodass Sie hier keine benötigen
OrderedDict
. Sie können die folgenden Ansätze mit einem normalen verwendendict
Quelle
Python 3.6 und früher *
Wenn Sie von einem Stammkunden sprechen
dict
, bedeutet der "erste Schlüssel" nichts. Die Schlüssel werden in keiner Weise bestellt, auf die Sie sich verlassen können. Wenn Sie über Ihre iterieren, werdendict
Sie wahrscheinlich nicht"banana"
als erstes sehen.Wenn Sie die Dinge in Ordnung halten möchten, müssen Sie ein
OrderedDict
und nicht nur ein einfaches Wörterbuch verwenden.Wenn Sie dann alle Schlüssel der Reihe nach anzeigen möchten , können Sie dies tun, indem Sie sie durchlaufen
Sie können alternativ alle Schlüssel in eine Liste einfügen und dann damit arbeiten
Ein schnellerer Weg, um das erste Element zu erhalten, ohne eine Liste zu erstellen, besteht darin,
next
den Iterator aufzurufen . Dies lässt sich jedoch nicht gut verallgemeinern, wenn versucht wird, dasnth
Element abzurufen* CPython hatte die Einfügereihenfolge als Implementierungsdetail in 3.6 garantiert.
quelle
Für Python 3 entfällt der Aufwand für die Listenkonvertierung:
quelle
Der
dict
Typ ist eine ungeordnete Zuordnung, daher gibt es kein "erstes" Element.Was Sie wollen, ist wahrscheinlich
collections.OrderedDict
.quelle
Also habe ich diese Seite gefunden, als ich versucht habe, etwas zu optimieren, um den einzigen Schlüssel in einem Wörterbuch bekannter Länge 1 zu nehmen und nur den Schlüssel zurückzugeben. Der folgende Vorgang war der schnellste für alle Wörterbücher, die ich bis zur Größe 700 ausprobiert habe.
Ich habe 7 verschiedene Ansätze ausprobiert und festgestellt, dass dieser auf meinem 2014er Macbook mit Python 3.6 der beste ist:
Die Ergebnisse der Profilerstellung waren:
Alle Ansätze, die ich ausprobiert habe, sind hier:
quelle
Genauso einfach wird die Antwort meiner Meinung nach sein
first = list(prices)[0]
Wenn Sie das Wörterbuch in eine Liste konvertieren, werden die Schlüssel ausgegeben und der erste Schlüssel aus der Liste ausgewählt.
quelle
next(iter(prices))
, wie bereits in anderen Antworten vorgeschlagen.Wie viele andere darauf hingewiesen haben, gibt es keinen ersten Wert in einem Wörterbuch. Die Sortierung in ihnen ist willkürlich und Sie können nicht davon ausgehen, dass die Sortierung bei jedem Zugriff auf das Wörterbuch gleich ist. Wenn Sie jedoch die Schlüssel drucken möchten, gibt es verschiedene Möglichkeiten:
Diese Methode verwendet die Tupelzuweisung, um auf den Schlüssel und den Wert zuzugreifen. Dies ist praktisch, wenn Sie aus irgendeinem Grund sowohl auf den Schlüssel als auch auf den Wert zugreifen müssen.
Dies ermöglicht nur den Zugriff auf die Schlüssel, wie es die
keys()
Methode impliziert.quelle
d.keys () [0], um den einzelnen Schlüssel zu erhalten.
Update: - @AlejoBernardin, ich bin mir nicht sicher, warum du gesagt hast, dass es nicht funktioniert hat. hier habe ich nachgesehen und es hat funktioniert. Sammlungen importieren
quelle
dict.keys()
a'dict_keys' object
anstelle von a zurücklist
, was die Indizierung nicht unterstützt.Verwenden Sie eine for-Schleife, die sich durch alle Tasten in erstreckt
prices
:Stellen Sie sicher, dass Sie zu wechseln
prices.items()
,prices.iteritems()
wenn Sie Python 2.x verwendenquelle
Wenn Sie nur den ersten Schlüssel aus einem Wörterbuch möchten, sollten Sie das verwenden, was viele zuvor vorgeschlagen haben
Wenn Sie jedoch den ersten möchten und den Rest als Liste behalten möchten, können Sie den Operator zum Entpacken von Werten verwenden
Das Gleiche gilt für Werte, die durch Ersetzen
prices
durchprices.values()
und für Schlüssel und Wert ersetzt werden. Sie können sogar die Entpackungszuweisung verwendenquelle
Der einfachste Weg ist:
Manchmal sollten Sie jedoch vorsichtiger sein und sicherstellen, dass Ihre Entität eine wertvolle Liste ist.
quelle
TypeError: 'dict_keys' object is not subscriptable
zumindest mit Python 3.8