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.
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.
$ 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
$ 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
$ 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.
>>>
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)
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
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