[Serie Python Fennel Bean] Fusión de diccionarios

[Serie Python Fennel Bean] Fusión de diccionarios

Al programar en Python, a veces resulta interesante utilizar diferentes métodos para lograr el mismo objetivo. Esto me recuerda al Kong Yiji de Lu Xun. Kong Yiji investigó mucho sobre las cuatro formas de escribir la palabra hinojo para los frijoles de hinojo. No me atrevo a compararme con Kong Yiji, así que aquí colecciono algunos frijoles de hinojo Python para el disfrute de todos los programadores.

Supongamos que hay un diccionario x y un diccionario y, y BOSS necesita fusionarlos para generar un nuevo diccionario z, con x e y sin cambios. El efecto a conseguir es el siguiente:

x = {
    
    'a': 1, 'b': 2}
y = {
    
    'b': 8, 'c': 9}

Después de procesar

z = {
    
    'a': 1, 'b': 8, 'c': 9}

Como súper principiante, un posible enfoque sería:

>>> x = {
    
    'a': 1, 'b': 2}
>>> y = {
    
    'b': 8, 'c': 9}
>>> z = {
    
    }
>>> for k, v in x.items():
        z[k] = v
>>> for k, v in y.items():
        z[k] = v
>>> z
{
    
    'a': 1, 'b': 8, 'c': 9}

¡misión completada!
Sin embargo, esta solución obviamente no satisfizo a Kong Yiji, por lo que comenzó a contar semillas de hinojo.

frijol de hinojo uno: actualización

Si su versión de Python es menor o igual a 3.4, entonces el siguiente método debería ser el más común:

>>> z = x.copy()
>>> z.update(y)
>>> z
{
    
    'a': 1, 'b': 8, 'c': 9}

Hinojo II: Dos estrellitas

Si has abandonado por completo la 2 y la versión de Python es mayor o igual a 3.5, entonces puedes hacer esto:

>>> z = {
    
    **x, **y}
>>> z
{
    
    'a': 1, 'b': 8, 'c': 9}

Frijoles de hinojo tres: una barra vertical

¿Qué? ¿Su versión de Python es mayor o igual a 3.9? Está bien:

>>> z = x | y
>>> z
{
    
    'a': 1, 'b': 8, 'c': 9}

Frijol de hinojo cuatro: ChainMap

ChainMap puede resultar un poco desconocido para la mayoría de los desarrolladores, su característica es: "primera impresión", así que preste atención al orden de los dos diccionarios.

>>> from collections import ChainMap
>>> z = dict(ChainMap(y, x))
>>> z
{
    
    'a': 1, 'b': 8, 'c': 9}

Frijoles De Hinojo Cinco: Dict

Dict es una gran cosa, aquí hay algunos ejemplos. Sin embargo, no recomiendo usarlo.

¿Por qué? No lo suficientemente elegante.

>>> z = dict(x, **y)  # 仅限于字典的 Key 均为 string 时有效
>>> z = dict(x.items() + y.items())  # Python 2
>>> z = dict(x.items() | y.items())

Supongo que te gusta

Origin blog.csdn.net/mouse2018/article/details/113469997
Recomendado
Clasificación