【问题标题】:Select few Dictionary Keys from list of dictionaries while also adding new keys从字典列表中选择几个字典键,同时添加新键
【发布时间】: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'}]

新列表中需要的键如下,key5key6是需要添加的新键

wantedkeys=['key1','key3','key5','key6']

字典用于添加新的键值

keyMap={(123, 'key5'): 'abc', (123, 'key6'): 'pqr'}

我可以选择key1key3 以使用以下语法获取输出。

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


【解决方案1】:

找到解决方案。希望这会有所帮助

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']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-21
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多