我已閱讀了一些文章和論壇帖子,但還沒有完全想出如何改進下面。我有一個需要用兩種方式過濾的字典列表。Python中的字典列表的雙重過濾器
jsonData = [{'a':'1a', 'b':'1b', 'c':'1c'},{'a':'2a','b':'2b', 'c':'2c'}, {'a':'3a','b':'3b', 'c':'3c'}]
我想刪除列表中鍵c對應於3c的任何字典。下面的第一行就是這樣。然後我只想保留b和c鍵以及相應的值。這是其餘的事情。這一切都有效,但我想知道第二部分是否也可以用列表理解來表達,以及是否有其他方法可以簡化它。
jsonData = [i for i in jsonData if i['c'] != '3c']
for i in range(len(jsonData)):
jsonData[i] = {key:value for key,value in jsonData[i].items() if key in ['b','c']}
非常感謝您
在性能方面,您需要測試是否最好使用我使用的set-literal或在理解之外創建的集合,以及是否將其放置在keysview的創建的左側或右側;這可能很容易因爲實施細節而有所不同,所以如果性能是一個嚴重問題,那麼您需要驗證。 – ShadowRanger
非常感謝!您的解決方案完美運作仔細觀察性能。 – paul