create - set set python
¿Qué significa `**` en la expresión `dict(d1,** d2)`? (6)
** convierte el diccionario en parámetros de palabra clave:
>>> d1 = {''a'': 1, ''b'': 2}
>>> d2 = {''c'': 3, ''d'': 4}
>>> d3 = dict(d1, **d2)
Se convierte en:
>>> d3 = dict(d1, c=3, d=4)
Estoy intrigado por la siguiente expresión de Python:
d3 = dict(d1, **d2)
La tarea es fusionar 2 diccionarios en un tercero, y la expresión anterior cumple perfectamente con la tarea. Estoy interesado en el operador ** y qué está haciendo exactamente con la expresión. Pensé que ** era el operador de energía y aún no lo había visto en el contexto anterior.
El fragmento completo de código es este:
>>> d1 = {''a'': 1, ''b'': 2}
>>> d2 = {''c'': 3, ''d'': 4}
>>> d3 = dict(d1, **d2)
>>> print d3
{''a'': 1, ''c'': 3, ''b'': 2, ''d'': 4}
En Python, cualquier función puede aceptar múltiples argumentos con *;
o múltiples argumentos de palabras clave con **.
Ejemplo del lado receptor:
>>> def fn(**kwargs):
... for kwarg in kwargs:
... print kwarg
...
>>> fn(a=1,b=2,c=3)
a
c
b
Ejemplo del lado llamante (gracias Thomas):
>>> mydict = dict(a=1,b=2,c=3)
>>> fn(**mydict)
a
c
b
Ese operador se usa para descomprimir la lista de argumentos: http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists
También vale la pena mencionar la mecánica del constructor dict. Toma un diccionario inicial como primer argumento y también puede tomar argumentos de palabra clave, cada uno representando un nuevo miembro para agregar al diccionario recién creado.
usted tiene su respuesta del ** operador. aquí hay otra forma de agregar diccionarios
>>> d1 = {''a'': 1, ''b'': 2}
>>> d2 = {''c'': 3, ''d'': 4}
>>> d3=d1.copy()
>>> d3.update(d2)
>>> d3
{''a'': 1, ''c'': 3, ''b'': 2, ''d'': 4}
**
en las listas de argumentos tiene un significado especial, como se trata en la sección 4.7 del tutorial . El objeto de diccionario (o similar a un diccionario) pasado con **kwargs
se expande en argumentos de palabras clave al invocable, al igual que *args
se expande en argumentos posicionales separados.