2009-10-11 12 views
13

Duplicar posible:
Python “extend” for a dictionary¿Cómo pueden 2 diccionarios de Python convertirse en 1?

sé que la lista de Python se puede añadir o extendido. ¿Hay una manera fácil de combinar dos diccionarios de Python con claves únicas, por ejemplo:

basket_one = {'fruit': 'watermelon', 'veggie': 'pumpkin'} 
basket_two = {'dairy': 'cheese', 'meat': 'turkey'} 

que luego quieren una gran canasta de alimentos:

basket = { 
    'fruit': 'watermelon', 
    'veggie': 'pumpkin', 
    'dairy': 'cheese', 
    'meat': 'turkey' 
} 

¿Cómo puedo realizar lo anterior en Python?

+0

Dup de http://stackoverflow.com/questions/577234/python-extend-for-a-dictionary – gnud

Respuesta

50

El "camino oneliner", alterar ninguno de los dicts de entrada, es

basket = dict(basket_one, **basket_two) 

En caso de conflicto, los artículos de basket_two anularán los de basket_one. Como dicen las frases ingeniosas, esto es bastante legible y transparente, y no tengo ningún reparo en usarlo en cualquier momento que un diccionario que es una mezcla de otros dos sea útil (cualquier lector que tenga problemas para comprenderlo estará de hecho muy bien servido por la forma en que esto lo impulsa u oye para aprender sobre dict y el formulario ** ;-). Así, por ejemplo, utiliza como:

x = mungesomedict(dict(adict, **anotherdict)) 

son razonablemente apariciones frecuentes en mi código.

+3

Esto es bastante común, un buen lenguaje que todo el mundo debe saber –

+0

Vaya, es una forma muy interesante de combinar 2 diccionarios. Utiliza Python básico. Me alegro de que esta respuesta haya sido ingresada antes de que la pregunta se haya cerrado. –

7
basket = basket_one.copy() 
basket.update(basket_two) 

(si el basket_one original no necesita permanecer intacto, se puede omitir la copia)

Cuestiones relacionadas