Tim Chase wrote: > On 2016-11-11 11:17, Daiyue Weng wrote: >> dict1 = {'A': 'a', 'B': 'b', 'C': 'c'} >> dict2 = {'A': 'aa', 'B': 'bb', 'C': 'cc'} >> >> I am wondering how to update dict1 using dict2 that >> >> only keys 'A' and 'B' of dict1 are udpated. It will result in >> >> dict1 = {'A': 'aa', 'B': 'bb', 'C': 'c'} > > Use dict1's .update() method: > >>>> dict1 = {'A': 'a', 'B': 'b', 'C': 'c'} >>>> dict2 = {'A': 'aa', 'B': 'bb', 'C': 'cc'} >>>> desired = {'A', 'B'} >>>> dict1.update({k:v for k,v in dict2.items() if k in desired}) >>>> dict1 > {'C': 'c', 'B': 'bb', 'A': 'aa'} > > > or do it manually > > for k in dict2: > if k in desired: > dict1[k] = dict2[k]
If desired is "small" compared to the dicts: >>> for k in desired & dict1.keys() & dict2.keys(): ... dict1[k] = dict2[k] ... >>> dict1 {'A': 'aa', 'C': 'c', 'B': 'bb'} The same using update(), with a generator expression that avoids the intermediate dict: >>> dict1 = {'A': 'a', 'B': 'b', 'C': 'c'} >>> dict1.update((k, dict2[k]) for k in desired & dict1.keys() & dict2.keys()) >>> dict1 {'A': 'aa', 'C': 'c', 'B': 'bb'} As written this will add no new keys to dict1. If you want to allow new keys use desired & dict2.keys() as the set of keys. -- https://mail.python.org/mailman/listinfo/python-list