選択した要素を辞書間でコピーしたい。これよりも優れた/より効率的な方法はありますか:
dict1 = {'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4}
list = ['a', 'd']
dict2 = { k : dict1[k] for k in dict1 if k in list }
?
選択した要素を辞書間でコピーしたい。これよりも優れた/より効率的な方法はありますか:
dict1 = {'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4}
list = ['a', 'd']
dict2 = { k : dict1[k] for k in dict1 if k in list }
?
はい、dict.get()
辞書の代わりにキーのリストを使用して反復します。
>>> {k:dict1.get(k) for k in list1}
{'a': 1, 'd': 4}
組み込みの type をオーバーライドしないでくださいlist
。
k
これは、dict1 のキーではない場合に返されるため、特に役立ちますNone
。
機能的な方法があります
>>> dict1 = {'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4}
>>> lst = ['a', 'd']
>>> dict(zip(lst, map(dict1.get, lst)))
{'a': 1, 'd': 4}
また
>>> from operator import itemgetter
>>> dict(zip(lst, itemgetter(*lst)(dict1)))
{'a': 1, 'd': 4}
しかし、それらはdict理解よりも〜3倍遅いです:)