Select 字典列表中的几个字典键,同时还添加了新键
Select few Dictionary Keys from list of dictionaries while also adding new keys
我想 select 现有字典列表中的一些键,并通过查看另一张地图添加一些其他键。
主要名单如下
result=[{'key1':123,'key2':'prod','key3':'abc','key4':'cde'},{'key1':123,'key2':'prod','key3':'def','key4':'qrs'},{'key1':321,'key2':'sale','key3':'dssd','key4':'cfde'}]
新列表中需要的键如下,key5
和key6
是需要添加的新键
wantedkeys=['key1','key3','key5','key6']
用于添加新键值的字典
keyMap={(123, 'key5'): 'abc', (123, 'key6'): 'pqr'}
我能够 select key1
和 key3
使用以下语法获取输出。
new_list = [{ key: record[key] for key in wantedkeys } for record in result if record['key2']=='prod']
但是在扩展它以添加额外的键时我遇到了语法错误。
new_list = [{ key : keyMap[record['key1'],key] if key in ['key5','key6'] else key: record[key] for key in wantedkeys } for record in result if record['key2']=='Prod']
我知道这可以通过遍历列表来完成,但是有没有更多的 pythonic 方法来实现这个更好的性能,因为我的列表将有几百万条记录
任何帮助将不胜感激
得到解决方案。希望这会有所帮助
new_list = [dict({ key: record[key] for key in ['key1','key3']},key5=keyMap[record['key1'],'key5'],key6=keyMap[record['key1'],'key6']) for record in result if record['key2']=='prod']
我想 select 现有字典列表中的一些键,并通过查看另一张地图添加一些其他键。
主要名单如下
result=[{'key1':123,'key2':'prod','key3':'abc','key4':'cde'},{'key1':123,'key2':'prod','key3':'def','key4':'qrs'},{'key1':321,'key2':'sale','key3':'dssd','key4':'cfde'}]
新列表中需要的键如下,key5
和key6
是需要添加的新键
wantedkeys=['key1','key3','key5','key6']
用于添加新键值的字典
keyMap={(123, 'key5'): 'abc', (123, 'key6'): 'pqr'}
我能够 select key1
和 key3
使用以下语法获取输出。
new_list = [{ key: record[key] for key in wantedkeys } for record in result if record['key2']=='prod']
但是在扩展它以添加额外的键时我遇到了语法错误。
new_list = [{ key : keyMap[record['key1'],key] if key in ['key5','key6'] else key: record[key] for key in wantedkeys } for record in result if record['key2']=='Prod']
我知道这可以通过遍历列表来完成,但是有没有更多的 pythonic 方法来实现这个更好的性能,因为我的列表将有几百万条记录 任何帮助将不胜感激
得到解决方案。希望这会有所帮助
new_list = [dict({ key: record[key] for key in ['key1','key3']},key5=keyMap[record['key1'],'key5'],key6=keyMap[record['key1'],'key6']) for record in result if record['key2']=='prod']