resueltos recorrer lista elementos ejercicios diccionarios diccionario dentro convertir agregar python dictionary associative-array idioms set-operations

recorrer - lista de diccionarios python



UniĆ³n de objetos dict en Python (4)

Esta pregunta ya tiene una respuesta aquí:

¿Cómo se calcula la unión de dos objetos dict en Python, donde un par (key, value) está presente en el resultado si la key está in cualquiera in dos términos (a menos que haya duplicados)?

Por ejemplo, la unión de {''a'' : 0, ''b'' : 1} y {''c'' : 2} es {''a'' : 0, ''b'' : 1, ''c'' : 2} .

Preferiblemente puede hacer esto sin modificar cualquiera de las entradas dict . Ejemplo de dónde esto es útil: Obtenga un dict de todas las variables actualmente en alcance y sus valores


Si necesita ambos dicts para mantenerse independiente y actualizable, puede crear un solo objeto que consulte ambos diccionarios en su método __getitem__ (e implemente get , __contains__ y otro método de mapeo cuando los necesite).

Un ejemplo minimalista podría ser así:

class UDict(object): def __init__(self, d1, d2): self.d1, self.d2 = d1, d2 def __getitem__(self, item): if item in self.d1: return self.d1[item] return self.d2[item]

Y funciona:

>>> a = UDict({1:1}, {2:2}) >>> a[2] 2 >>> a[1] 1 >>> a[3] Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 7, in __getitem__ KeyError: 3 >>>


También puedes usar el método de update de dict like

a = {''a'' : 0, ''b'' : 1} b = {''c'' : 2} a.update(b) print a


Esta pregunta proporciona una expresión idiomática. Utiliza uno de los dicts como argumentos de palabra clave para el constructor dict() :

dict(y, **x)

Los duplicados se resuelven a favor del valor en x ; por ejemplo

dict({''a'' : ''y[a]''}, **{''a'', ''x[a]''}) == {''a'' : ''x[a]''}


Dos diccionarios

def union2(dict1, dict2): return dict(list(dict1.items()) + list(dict2.items()))

n diccionarios

def union(*dicts): return dict(itertools.chain.from_iterable(dct.items() for dct in dicts))