często znajduję się przy użyciu tego konstruktu:Aktualizacja dict ze strony innego dict
dict1['key1'] = dict2['key1']
dict1['key2'] = dict2['key2']
dict1['key3'] = dict2['key3']
Kind aktualizacji dict1
z podzbioru dict2
.
myślę, że nie ma wbudowanego sposób robi to samo w formie
dict1.update_partial(dict2, ('key1', 'key2', 'key3'))
Jakie podejście zwykle trwa? Czy zrobiłeś dla tego swoją funkcję? Jak to wygląda?
Komentarze?
I złożyli idea do Pythona pomysłów:
Czasami chcesz dict, który jest podzbiorem innego dict. Byłoby miło, gdyby dict.items zaakceptował opcjonalną listę kluczy do zwrotu. Jeśli nie podano żadnego klucza, użyj domyślnego zachowania - pobierz wszystkie elementy.
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'}
Tak aby zaktualizować dict z częścią innego dict, użyłbyś:
dict1.update(dict2.items(['key1', 'key2', 'key3']))
Nie nauczyłem się niczego nowego - tak naprawdę nie ma żadnego skrótu ... Podoba mi się ta odpowiedź - jest bardziej jednoznaczna. I myślę, że jest szybszy niż odpowiedź aquavitae, ponieważ nie tworzy żadnych pośrednich list ani generatorów. – warvariuc