Heim  >  Artikel  >  Backend-Entwicklung  >  Die Verwendung im Python-Wörterbuch müssen Sie kennen

Die Verwendung im Python-Wörterbuch müssen Sie kennen

angryTom
angryTomnach vorne
2019-11-28 17:12:152957Durchsuche

Die Python-Version dieses Artikels ist 3.7.X. Bevor Sie diesen Artikel lesen, müssen Sie die grundlegende Verwendung des Python-Wörterbuchs verstehen.

Die Verwendung im Python-Wörterbuch müssen Sie kennen

Einführung

Dictionary (dict) ist eine integrierte Datenstruktur in Python, die aus mehreren Schlüssel-Wert-Paaren besteht. (Schlüssel) und Wert (Wert) werden durch Doppelpunkte getrennt, jedes Schlüssel-Wert-Paar wird durch Kommas (,) getrennt, das gesamte Wörterbuch steht in geschweiften Klammern ({}), der Schlüssel muss eindeutig sein und der Wert kann eindeutig sein beliebigen Typs sein. Die Schlüssel müssen jedoch von unveränderlichem Typ sein, z. B. Zeichenfolge, Zahl oder Tupel.

Empfohlen: „Python-Tutorial

Die unterste Ebene verwendet eine Hash-Tabelle, um Zuordnen von Schlüsseln und Wert, Diktat ist ungeordnet. Zu den Funktionen gehören:

● Die Such- und Einfügegeschwindigkeit ist extrem schnell und wird nicht langsamer, wenn die Anzahl der Schlüssel zunimmt

● Es erfordert mehr Speicher

Also, diktieren Sie ist eine Datenstruktur, die Raum gegen Zeit tauscht und in Szenarien verwendet wird, in denen eine schnelle Suche erforderlich ist.

Operation: Allgemeine Methoden

get()

Gibt den Wert des angegebenen Schlüssels zurück. Wenn der Schlüssel nicht vorhanden ist, wird der Standardwert zurückgegeben (Standard ist None ) ohne einen Fehler zu melden, lautet die Syntax dict.get(key).

dict_1['age'] = 24
In [7]: print(dict_1.get('age'))
24
In [11]: print(dict_1.get('nama'))
None
In [12]: print(dict_1['nama'])
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-12-ef61a380920e> in <module>
----> 1 print(dict_1[&#39;nama&#39;])
KeyError: &#39;nama&#39;

Geben Sie dict ein

Verwenden Sie den in-Operator, um festzustellen, ob der Schlüssel im Wörterbuch vorhanden ist. Wenn er vorhanden ist, wird True zurückgegeben, andernfalls wird False zurückgegeben Die Syntax lautet: key in dict .

In [15]: dict_1
Out[15]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [16]: print(&#39;name&#39; in dict_1)
True
In [17]: print(&#39;nama&#39; in dict_1)
False

In Python 2 wird diese Funktion mithilfe der Methode has_key() implementiert.

items()

Gibt ein durchlaufbares (Schlüssel, Wert) Tupel-Array in Listenform zurück, die Syntax ist dict.items().

In [18]: dict_1
Out[18]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [19]: print(dict_1.items())
dict_items([(&#39;name&#39;, None), (&#39;age&#39;, 24), (&#39;sex&#39;, None)])
In [20]: for key, value in dict_1.items():
    ...:     print(key, value)
    ...:
name None
age 24
sex None

keys()

Gibt alle Schlüssel eines Wörterbuchs als Liste zurück: dict.keys()

In [21]: dict_1
Out[21]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [22]: print(dict_1.keys())
dict_keys([&#39;name&#39;, &#39;age&#39;, &#39;sex&#39;])

values()

Gibt alle Werte im Wörterbuch als Liste zurück: dict.values()

In [27]: dict_1
Out[27]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;Tony&#39;}
In [28]: print(dict_1.values())
dict_values([None, 24, None, &#39;Tony&#39;])
setdefault()
和get()类似,用户获得与给顶尖相关联的值,不同的是,该方法如果键不存在时会添加键并将值设为默认值,语法为:dict.setdefault(key, default=None)。
In [23]: dict_1
Out[23]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None}
In [24]: print(dict_1.setdefault(&#39;name&#39;))
None
In [25]: print(dict_1.setdefault(&#39;name&#39;, &#39;Tony&#39;))
None
In [26]: print(dict_1.setdefault(&#39;sub_name&#39;, &#39;Tony&#39;))
Tony
In [27]: dict_1
Out[27]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;Tony&#39;}

update()

Die Syntax lautet: dict_1. update(dict_2) wird verwendet, um die Schlüssel-Wert-Paare von dict_2 auf dict_1 zu aktualisieren.

In [31]: dict_1
Out[31]: {&#39;name&#39;: None, &#39;age&#39;: 24, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;Tony&#39;}
In [32]: dict_2
Out[32]: {&#39;name&#39;: &#39;Mary&#39;, &#39;age&#39;: 18, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;&#39;}
In [33]: dict_1.update(dict_2)
In [34]: dict_1
Out[34]: {&#39;name&#39;: &#39;Mary&#39;, &#39;age&#39;: 18, &#39;sex&#39;: None, &#39;sub_name&#39;: &#39;&#39;}

clear()

Alle Elemente im Wörterbuch löschen, dict.clear(), zum Beispiel:

In [1]: dict_1 = dict(name="Tony", age=24)
In [2]: dict_2 = dict_1
In [3]: print(dict_2)
{&#39;name&#39;: &#39;Tony&#39;, &#39;age&#39;: 24}
In [4]: dict_2.clear()
In [5]: dict_2
Out[5]: {}
In [6]: dict_1
Out[6]: {}

copy ( )

Flache Kopie des ursprünglichen Wörterbuchs, die ein neues Wörterbuch mit denselben Schlüssel-Wert-Paaren zurückgibt, dict.copy(), zum Beispiel:

In [1]: dict_1 = dict(name=&#39;Tony&#39;, info=[&#39;boy&#39;, 24])
In [2]: dict_3 = dict_1.copy()
In [3]: dict_3[&#39;name&#39;] = "Ring"
In [4]: dict_3[&#39;info&#39;].remove(&#39;boy&#39;)
In [5]: dict_3
Out[5]: {&#39;name&#39;: &#39;Ring&#39;, &#39;info&#39;: [24]}
In [6]: dict_1
Out[6]: {&#39;name&#39;: &#39;Tony&#39;, &#39;info&#39;: [24]}

fromkeys( )

Erstellen Sie ein neues Wörterbuch, dict.fromkeys(seq[, value], verwenden Sie die Elemente in der Sequenz seq als Schlüssel des Wörterbuchs, und value ist der Anfangswert, der allen Schlüsseln entspricht im Wörterbuch, wobei der Wert für die Auswahlparameter steht, der Standardwert ist „Keine“. Geeignet für die Dateninitialisierung, zum Beispiel:

In [1]: info = [&#39;name&#39;, &#39;age&#39;, &#39;sex&#39;]
In [2]: dict_1 = dict.fromkeys(info)
In [3]: dict_1
Out[3]: {&#39;name&#39;: None, &#39;age&#39;: None, &#39;sex&#39;: None}

Allgemeine Operationen

Wörterbücher zusammenführen

Es gibt vier Möglichkeiten:

Allgemeine Verarbeitung

In [15]: dict_1
Out[15]: {&#39;Tony&#39;: 24}
In [16]: dict_2
Out[16]: {&#39;ben&#39;: 18}
In [17]: dict3 = dict()
In [18]: for key, value in dict_1.items():
    ...:     dict_3[key] = value
    ...:
In [19]: for key, value in dict_2.items():
    ...:     dict_3[key] = value
    ...:
In [20]: dict_3
Out[20]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}

update()

In [9]: dict_1
Out[9]: {&#39;Tony&#39;: 24}
In [10]: dict_2
Out[10]: {&#39;ben&#39;: 18}
In [12]: dict_3 = dict_1.copy()
In [13]: dict_3.update(dict_2)
In [14]: dict_3
Out[14]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}

Dict(d1, **d2) mit Hilfe von Wörterbuchmethode

In [33]: dict_1
Out[33]: {&#39;Tony&#39;: 24}
In [34]: dict_2
Out[34]: {&#39;ben&#39;: 18}
In [35]: dict_3 = dict(dict_1, **dict_2)
In [36]: dict_3
Out[36]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}

Fortgeschritten

Wörterbuchverständnis

ähnelt dem Listenverständnis, mit dem Vorteil, dass es so ist Die C-Implementierung, die auf der untersten Ebene verwendet wird, ist viel schneller und wird empfohlen.

Wörterbuchschlüsselwerte austauschen

Verwenden Sie Wörterbuchverständnisse, um die Schlüsselwerte eines Wörterbuchs einfach auszutauschen:

In [42]: dict_4
Out[42]: {24: &#39;Tony&#39;, 18: &#39;ben&#39;}
In [43]: dict_3
Out[43]: {&#39;Tony&#39;: 24, &#39;ben&#39;: 18}
In [44]: dict_4 = {k:v for v, k in dict_3.items()}
In [45]: dict_4
Out[45]: {24: &#39;Tony&#39;, 18: &#39;ben&#39;}

Aus Wörterbuchextraktion Teilmengen von

möchte ein Wörterbuch erstellen, das selbst eine Teilmenge eines anderen Wörterbuchs ist.

Zum Beispiel:

In [88]: a = {&#39;Ben&#39;: 18, &#39;Jack&#39;: 12, &#39;Ring&#39;: 23, &#39;Tony&#39;: 24}
In [89]: b = {k:v for k, v in a.items() if v > 18}
In [90]: b
Out[90]: {&#39;Ring&#39;: 23, &#39;Tony&#39;: 24}

Erzeugen Sie ein geordnetes Wörterbuch

Wörterbücher vor Python3.6 sind ungeordnet, aber manchmal müssen wir die Ordnung aufrechterhalten Wörterbuch, orderDict kann die Ordnung des Wörterbuchs auf der Grundlage des Diktats erreichen. Die Reihenfolge bezieht sich hier auf die Reihenfolge, in der die Wörterbuchschlüssel eingefügt werden Wird das Limit überschritten, wird der früheste hinzugefügte Schlüssel zuerst gelöscht.

Beispiel:

In [49]: from collections import OrderedDict
In [50]: ordered_dict = OrderedDict([(&#39;a&#39;, 2), (&#39;b&#39;, 4), (&#39;c&#39;, 5)])
In [51]: for key, value in ordered_dict.items():
    ...:     print(key, value)
    ...:
a 2
b 4
c 5

Sie können sehen, dass OrderedDict beim Erstellen des Wörterbuchs nach der Einfügereihenfolge sortiert wird.

Prinzip: OrderedDict verwaltet intern eine doppelt verknüpfte Liste, die die Schlüsselpositionen entsprechend der Reihenfolge anordnet, in der Elemente hinzugefügt werden. Dies führt auch dazu, dass die Größe von OrderedDict mehr als doppelt so groß ist wie die eines gewöhnlichen Wörterbuchs.

Wörterbücher mit demselben Schlüssel in der Liste zusammenführen

Das heißt, das sogenannte Ein-Schlüssel-Mehrwertwörterbuch zu generieren, das die entsprechenden mehreren Werte benötigt in anderen Containern wie Listen oder Sammlungen gespeichert werden, je nachdem, ob mehrere Werte eindeutig sein müssen.

Zum Beispiel:

In [64]: from collections import defaultdict
In [65]: a = [{&#39;a&#39;: 1}, {&#39;b&#39;: 3}, {&#39;c&#39;: 4}, {&#39;a&#39;:5}, {&#39;b&#39;:2}, {&#39;b&#39;: 4}]
In [66]: b = defaultdict(list)
In [67]: [b[k].append(v) for item in a for k, v in item.items()]
Out[67]: [None, None, None, None, None, None]
In [68]: b
Out[68]: defaultdict(list, {&#39;a&#39;: [1, 5], &#39;b&#39;: [3, 2, 4], &#39;c&#39;: [4]})
In [69]: b[&#39;a&#39;]
Out[69]: [1, 5]

Ähnlichkeiten und Unterschiede zwischen zwei Wörterbüchern finden

Szenario: Ähnlichkeiten und Unterschiede in zwei Wörterbüchern finden, einschließlich der gleichen Schlüssel oder gleichen Wert.

Analyse: Ein Wörterbuch ist eine Sammlung von Zuordnungen zwischen einer Reihe von Schlüsselwerten. Es weist die folgenden Eigenschaften auf:

keys() gibt alle Schlüssel im Wörterbuch und die Schlüssel zurück Wörterbuch unterstützt Mengenoperationen, sodass die Schlüssel des Wörterbuchs mithilfe der Schnittmenge und des Komplements von Mengen verarbeitet werden können.

items() gibt ein Objekt zurück, das aus (Schlüssel, Wert) besteht und Mengenoperationen unterstützt

values()- und Set-Operationen werden nicht unterstützt, da es keine Garantie dafür gibt, dass alle Werte eindeutig sind. Wenn jedoch eine Beurteilungsoperation erforderlich ist, können die Werte zunächst in Sets umgewandelt werden.

Beispiel:

In [78]: a = {&#39;a&#39;:1, &#39;b&#39;:2, &#39;c&#39;:3}
In [79]: b = {&#39;b&#39;:3, &#39;c&#39;:3, &#39;d&#39;:4}
In [80]: a.keys() & b.keys()
Out[80]: {&#39;b&#39;, &#39;c&#39;}
In [81]: a.keys() - b.keys()
Out[81]: {&#39;a&#39;}
In [82]: a.items() & b.items()
Out[82]: {(&#39;c&#39;, 3)}

Ein weiteres Beispiel: Beim Erstellen eines Wörterbuchs wird erwartet, dass bestimmte Schlüssel entfernt werden können:

In [85]: a
Out[85]: {&#39;a&#39;: 1, &#39;b&#39;: 2, &#39;c&#39;: 3}
In [86]: c = {k: a[key] for k in a.keys() - {&#39;b&#39;}}
In [87]: c
Out[87]: {&#39;a&#39;: 3, &#39;c&#39;: 3}

Dieser Artikel stammt aus dem

Python-Tutorial Kolumne, willkommen zum Lernen!

Das obige ist der detaillierte Inhalt vonDie Verwendung im Python-Wörterbuch müssen Sie kennen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen