a menudo me encuentro utilizando este constructo:actualizar un diccionario con parte de otro dict
dict1['key1'] = dict2['key1']
dict1['key2'] = dict2['key2']
dict1['key3'] = dict2['key3']
tipo de actualización de dict1
con un subconjunto de dict2
.
creo que no hay un método integrado para hacer lo mismo en forma
dict1.update_partial(dict2, ('key1', 'key2', 'key3'))
¿Qué enfoque que toma habitualmente? ¿Has hecho tu propia función para eso? ¿Como se ve?
Comentarios?
he presentado una idea a Python-ideas:
A veces quieren un diccionario que es subconjunto de otro dict. Sería bueno si dict.items aceptara una lista opcional de claves para devolver. Si no hay claves dadas - use el comportamiento predeterminado - obtenga todos los artículos.
class NewDict(dict):
def items(self, keys=()):
"""Another version of dict.items() which accepts specific keys to use."""
for key in keys or self.keys():
yield key, self[key]
a = NewDict({
1: 'one',
2: 'two',
3: 'three',
4: 'four',
5: 'five'
})
print(dict(a.items()))
print(dict(a.items((1, 3, 5))))
[email protected]:~/Desktop$ python test.py
{1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five'}
{1: 'one', 3: 'three', 5: 'five'}
Así que para actualizar un diccionario con una parte de otro dict, se debería utilizar:
dict1.update(dict2.items(['key1', 'key2', 'key3']))
No aprendí nada nuevo, realmente no hay ningún atajo ... Me gusta esta respuesta, es más explícito. Y creo que es más rápido que la respuesta de Aquavitae, ya que no crea ninguna lista intermedia o generador. – warvariuc