2016-11-18 3 views
0

In Python, ich habe ein Wörterbuch namens dict_a:Python: Wie bekomme ich das aktualisierte Wörterbuch in 1 Zeile?

dict_a = {'a':1} 

und ich möchte ein neues Wörterbuch erhalten dict_b als Update von dict_a, zur gleichen Zeit möchte ich nicht die dict_a ändern, so dass ich

dict_b = copy.deepcopy(dict_a).update({'b':2}) 

jedoch der Rückgabewert von dict.update ist None, so dass der obige Code funktioniert nicht: diese verwendet. Und ich muss das verwenden:

temp = copy.deepcopy(dict_a) 
temp.update({'b':2}) 
dict_b = temp 

Die Frage ist, wie bekomme ich mein Ziel in einer Zeile? Oder einige

+0

'temp = copy.deepcopy (dict_a); Temp.update ({'b': 2}); dict_b = temp' – YOU

+0

Sie konnten verwenden Sie einfach 'dict.copy()': dict_b = dict_a.copy() dict_b.update ({ 'b': 1}) –

+0

Verwenden 'toolz.merge ([dict_a, { 'b': 2}]) 'http://toolz.readthedocs.io/en/latest/api.html#toolz.dicttoolz.merge –

Antwort

0

Was:

>>> a = {'a':1} 
>>> update = {'b': 1} 
>>> b = dict(a.items() + update.items()) 
>>> b 
{'a': 1, 'b': 1} 

update - Ihr Wert ist, aktualisieren (verlängern) dict a

b - ist eine neue resultierende dict

anfd in diesem Fall a bleibe unverändert

+0

Ich frage mich immer noch, wie man die Ergebnisse von' copy.deepcopy (dict_a) bekommt. update ({'b': 2}) ', die Ergebnisse scheinen irgendwie verschwunden zu sein. –

+0

@springcc können Sie auch 'a = {'a': 1}; b = {'b': 2}; {k: v für d in [a, b] für k, v in d.items()} ' – wolendranh

Verwandte Themen