簡體   English   中英

從詞典列表中選擇一些詞典關鍵字,同時還添加新關鍵字

[英]Select few Dictionary Keys from list of dictionaries while also adding new keys

我想從現有字典列表中選擇一些鍵,並通過查找另一張地圖來添加其他鍵。

主要清單如下

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方法可以實現更好的性能,因為我的列表將有幾百萬條記錄,因此任何幫助將不勝感激

得到了解決方案。 希望這會有所幫助

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM