def new_dict(old_dict):
n = old_dict.copy()
n.pop('mykey1',None)
return n
new_list_of_dict = map(new_dict,list_of_dict)
また
new_list_of_dict = [ new_dict(d) for d in list_of_dict ]
を使用するのではなく、キーが存在しない場合を抑制するため、del
を選択しました。dict.pop
pop
KeyError
本当に特定のキーだけを取得したい場合、これは少し簡単になります。
from operator import itemgetter
tuple_keys = ('key1','key2','key3')
get_keys = itemgetter(*tuple_keys)
new_dict_list = [ dict(zip(tuple_keys,get_keys(d)) for d in old_dict_list ]
KeyError
キーが古い辞書にない場合に発生します
または:
new_dict_list = [ dict( (k,d.get(k,None)) for k in tuple_keys ) for d in old_dict_list ]
古い辞書にないkey:None
場合も追加されます。key
それを望まない場合はNone
、次のようにします。
new_dict_list = [ dict( (k,d[k]) for k in tuple_keys if k in d) for d in old_dict_list ]
含める/除外する辞書の割合と辞書のサイズによっては、@MartijnPieters によるソリューションよりもわずかに高速になる場合があります。