mi ritrovo spesso utilizza questo costrutto:Aggiornare un dict con parte di un altro dict
dict1['key1'] = dict2['key1']
dict1['key2'] = dict2['key2']
dict1['key3'] = dict2['key3']
Tipo di aggiornare dict1
con un sottoinsieme di dict2
.
penso che non c'è un metodo costruito per fare la stessa cosa in forma
dict1.update_partial(dict2, ('key1', 'key2', 'key3'))
Quale approccio di solito prende? Ti sei fatto una tua funzione per quello? Come sembra?
Commenti?
Ho presentato un idea per python-idee:
A volte si desidera un dict che è sottoinsieme di un altro dict. Sarebbe bello se dict.items accettasse un elenco opzionale di chiavi da restituire. Se nessuna chiave è data - usa il comportamento predefinito - ottieni tutti gli articoli.
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'}
Quindi, per aggiornare un dict con una parte di un altro dizionario, si usa:
dict1.update(dict2.items(['key1', 'key2', 'key3']))
Non ho imparato nulla di nuovo - non c'è davvero alcuna scorciatoia ... Mi piace questa risposta - è più esplicita. E penso che sia più veloce della risposta aquavitae, in quanto non crea alcun elenco o generatore intermedio. – warvariuc