【发布时间】:2019-08-25 17:57:56
【问题描述】:
我想从现有的字典列表中选择一些键,并通过查找另一个地图来添加一些其他键。
主要名单如下
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'}
我可以选择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 方法可以以更好的性能实现这一点,因为我的列表将有几百万条记录 任何帮助将不胜感激
【问题讨论】:
-
请不要在您的问题中包含答案。这对其他人具有误导性 - 在浏览该网站时不会立即看到该问题已得到回答。提取它并直接回答您的问题(您甚至可以通过它得分)。
标签: python-3.x list dictionary list-comprehension dictionary-comprehension