0

選択した要素を辞書間でコピーしたい。これよりも優れた/より効率的な方法はありますか:

dict1 = {'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4}
list = ['a', 'd']

dict2 = { k : dict1[k] for k in dict1 if k in list }

?

4

3 に答える 3

4

はい、dict.get()辞書の代わりにキーのリストを使用して反復します。

>>> {k:dict1.get(k) for k in list1}
{'a': 1, 'd': 4}

組み込みの type をオーバーライドしないでくださいlist

kこれは、dict1 のキーではない場合に返されるため、特に役立ちますNone

于 2013-10-21T05:47:41.440 に答える
1

機能的な方法があります

>>> 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倍遅いです:)

于 2013-10-21T06:08:49.843 に答える