Neu in Python3.9 Wörterbücher zusammenführen

Neu in Python3.9 Wörterbücher zusammenführen

Überblick

Python 3.9 wurde am 05. Oktober 2020 veröffentlicht. Eine der neuen Funktionen ist diesmal der Operator zum Zusammenführen von Diktaten. Dieser Zusammenführungsoperator macht das Zusammenführen von Wörterbüchern einfacher als je zuvor.

Aufbau der Testumgebung (Docker erforderlich)

Sie können Python 3.9 auf einem Docker-Container ausführen, indem Sie die folgenden Schritte ausführen. Die folgenden Schritte funktionieren für den Docker-Container, sodass Sie Python 3.9 validieren können, ohne die Host-Python-Version zu aktualisieren.

1. Erstellen Sie ein Konto für Docker Hub (nur wenn Sie kein Konto haben).

2. Docker-Login vom Terminal

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: #Geben Sie hier Ihren Docker Hub-Benutzernamen ein und drücken Sie die Eingabetaste
Password: #Geben Sie hier das Docker-Hub-Passwort ein und drücken Sie die Eingabetaste

Wenn die folgende Anzeige angezeigt wird, ist die Anmeldung erfolgreich

Login Succeeded

3. Ziehen Sie das python3.9 Docker-Image vom Docker-Hub

$ docker pull python:3.9
 3.9: Pulling from library/python
e4c3d3e4f7b0: Pull complete 
101c41d0463b: Pull complete 
8275efcd805f: Pull complete 
751620502a7a: Pull complete 
0a5e725150a2: Pull complete 
397dba5694db: Pull complete 
b1d09d0eabcb: Pull complete 
475299e7c7f3: Pull complete 
d2fe14d8e6bc: Pull complete 
Digest: sha256:429b2fd1f6657e4176d81815dc9e66477d74f8cbf986883c024c9b97f7d4d5a6
Status: Downloaded newer image for python:3.9
docker.io/library/python:3.9

4. Starten Sie den Container über das Docker-Image und starten Sie Python im Container im interaktiven Modus.

$ docker run -it python:3.9 python3
Python 3.9.0 (default, Oct 13 2020, 20:14:06)  # ←Python3.9 läuft
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Operator zusammenführen

Stellen Sie sich den Fall vor, in dem zwei Wörterbücher zu einem Wörterbuch kombiniert werden.

>> dict_1 = {"name": "Alice", "age": 29}
>> dict_2 = {"mail": "[email protected]", "tel": "000-0000-0000"}

#Kombinieren Sie die beiden oben genannten Diktate, um das folgende Diktat zu erstellen
dict_3 = {'name': 'Alice', 'age': 29, 'mail': '[email protected]', 'tel': '000-0000-0000'}

In herkömmlichem Python können Sie diktierte Elemente durchlaufen und dikt_2 Elemente dikt_1 einzeln zuweisen.

>> dict_3 = dict_1.copy() # dict_3 = dict_1 ist diktiert_Beachten Sie, dass 1 ebenfalls neu geschrieben wird
>>> for key, value in dict_2.items():
...   dict_3[key] = value
...
>>> dict_3
{'name': 'Alice', 'age': 29, 'mail': '[email protected]', 'tel': '000-0000-0000'}
>>> dict_1
{'name': 'Alice', 'age': 29} #Diktieren nach dem Zusammenführen_1 ändert sich nicht
>>> dict_2
{'mail': '[email protected]', 'tel': '000-0000-0000'} #Diktieren nach dem Zusammenführen_2 ändert sich nicht

In Python 3.9 wird der obige Vorgang nur vom Zusammenführungsoperator abgeschlossen.

>>> dict_3 = dict_1 | dict_2 # |Ist der Zusammenführungsoperator
>>> dict_3
{'name': 'Alice', 'age': 29, 'mail': '[email protected]', 'tel': '000-0000-0000'}

Mit dem Zusammenführungsoperator kann der Vorgang des Zusammenführens von dict_1 und dict_2 in einer Zeile beschrieben werden. Wenn derselbe Schlüssel in zwei Dikten vorhanden ist, befindet sich der zusammengeführte Wert auf der rechten Seite (letzter Gewinn).

>>> dict_1 = {"name": "Alice", "age": "29"}
>>> dict_2 = {"mail": "[email protected]", "tel": "000-0000-0000", "age": 30} # "age"Ist diktiert_1 und diktieren_In beiden enthalten 2
>>> dict_1 | dict_2
{'name': 'Alice', 'age': 30, 'mail': '[email protected]', 'tel': '000-0000-0000'} #Alter ist diktiert_Es ist 2 geworden
>>> dict_1 = {"name": "Alice", "age": "29"}
>>> dict_2 = {"mail": "[email protected]", "tel": "000-0000-0000", "age": None}
>>> dict_1 | dict_2
{'name': 'Alice', 'age': None, 'mail': '[email protected]', 'tel': '000-0000-0000'} #Beachten Sie, dass der Wert auf der rechten Seite, auch wenn er "Keine" ist, in das zusammengeführte Wörterbuch aufgenommen wird.(Nicht der Wert auf der linken Seite)

Operatorzuweisungsanweisung zusammenführen

Wie bei anderen Operatoren wie + und- können Sie das zusammengeführte Diktat auf der linken Seite zuweisen, indem Sie = hinzufügen.

>>> dict_1 = {"name": "Alice", "age": 29}
>>> dict_2 = {"mail": "[email protected]", "tel": "000-0000-0000"}
>>> id(dict_1), id(dict_2)
(140606638257856, 140606638701760)
>>> dict_1 |= dict_2 # dict_1 und diktieren_Diktieren Sie das Ergebnis der Zusammenführung 2_Ersetzen Sie 1
>>> dict_1
{'name': 'Alice', 'age': 29, 'mail': '[email protected]', 'tel': '000-0000-0000'} # dict_1 wird umgeschrieben
>>> dict_2
{'mail': '[email protected]', 'tel': '000-0000-0000'} # dict_2 ändert sich nicht
>>> id(dict_1), id(dict_2)
(140606638257856, 140606638701760) #id ist vor und nach der Berechnung gleich

Operator und OrderedDict zusammenführen

Der Zusammenführungsoperator kann auch für OrderedDict verwendet werden.

>>> from collections import OrderedDict
>>> o_dict_1 = OrderedDict({'name': 'Alice', 'age': 29})
>>> o_dict_2 = OrderedDict({'mail': '[email protected]', 'tel': '000-0000-0000'})
>>> o_dict_1
OrderedDict([('name', 'Alice'), ('age', 29)])
>>> o_dict_1 | o_dict_2
OrderedDict([('name', 'Alice'), ('age', 29), ('mail', '[email protected]'), ('tel', '000-0000-0000')])

Wenn auf der linken und rechten Seite ein Schlüssel gemeinsam ist, ist die Reihenfolge die linke Seite und der Wert die rechte Seite. Schlüssel, die nur auf der rechten Seite enthalten sind, werden am Ende in der Reihenfolge der rechten Seite hinzugefügt.

>>> from collections import OrderedDict
>>> o_dict_1 = OrderedDict({'name': 'Alice', 'age': 29})
>>> o_dict_2 = OrderedDict({'mail': '[email protected]', 'age': 30, 'name': 'Bob', 'tel': '000-0000-0000'})
>>> o_dict_1 | o_dict_2
OrderedDict([('name', 'Bob'), ('age', 30), ('mail', '[email protected]'), ('tel', '000-0000-0000')])
# age,Name ist o_dict_O in der Reihenfolge 1_dict_Sie sind mit einem Wert von 2 ausgerichtet.
# dict_Mail nur in 2 enthalten,tel ist o_dict_Am Ende in der Reihenfolge 2 hinzugefügt

Recommended Posts

Neu in Python3.9 Wörterbücher zusammenführen
Was ist neu in Python 3.5?
Was ist neu in Python 3.6?
Was ist neu in Python 3.10 (Zusammenfassung)
Neu in Python 3.4.0 (2) --enum
Was ist neu in Python 3.9 (Zusammenfassung)
Neu in Python 3.4.0 (1) --pathlib
Was in datetime neu ist, ist in Python 3 etwas nützlicher
Was ist neu in Python 3.9 (2) -Sortierte nicht verteilte Diagramme in Python
Neu in Django 1.8 Bedingte Ausdrücke #djangoja
Neue Funktionen in Python 3.4.0 (3) - Generische Funktionen für den Einzelversand
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Ein Memo, das ich in Python zusammengeführt habe
Ich möchte verschachtelte Dicts in Python zusammenführen
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python