gpt4 book ai didi

Python - 基于多个键的字典过滤列表

转载 作者:行者123 更新时间:2023-11-28 19:53:59 25 4
gpt4 key购买 nike

假设我有字典:

myDict = [{'first': 'James', 'middle': 'Smith', 'last': 'Joule'}, 
{'first': 'James', 'middle': 'Johnson', 'last': 'Watt'},
{'first': 'Christian', 'middle': 'Edward', 'last': 'Doppler'}
{'first': 'Robert', 'last': 'Antonio'}]

我有一个名为 keys 的列表:

keys = ["middle", "last"]

我想根据键中的每个值过滤 myDict,这将导致

filteredDict = [{'middle': 'Smith', 'last': 'Joule'},
{'middle': 'Johnson', 'last': 'Watt'},
{'middle': 'Edward', 'last': 'Doppler'},
{'last': 'Antonio'}]

正如在 myDict 列表中的列表字典中所见,字典不必同时具有两个键才能放入 filteredDict 中。有没有一种简单的方法可以通过 Python 中的字典理解来做到这一点?

最佳答案

使用列表推导式:

myDict = [{'first': 'James', 'middle': 'Smith', 'last': 'Joule'}, 
{'first': 'James', 'middle': 'Johnson', 'last': 'Watt'},
{'first': 'Christian', 'middle': 'Edward', 'last': 'Doppler'},
{'first': 'Robert', 'last': 'Antonio'}]

keys = {"middle", "last"}

l = [{k:v for k, v in i.items() if k in keys} for i in myDict]

但你也可以使用 map为此:

myDict = [{'first': 'James', 'middle': 'Smith', 'last': 'Joule'}, 
{'first': 'James', 'middle': 'Johnson', 'last': 'Watt'},
{'first': 'Christian', 'middle': 'Edward', 'last': 'Doppler'},
{'first': 'Robert', 'last': 'Antonio'}]

keys = {"middle", "last"}

l = list(map(lambda x: {k:v for k, v in x.items() if k in keys}, myDict))
print(l)

输出:

[{'last': 'Joule', 'middle': 'Smith'}, {'last': 'Watt', 'middle': 'Johnson'}, {'last': 'Doppler', 'middle': 'Edward'}, {'last': 'Antonio'}]

关于Python - 基于多个键的字典过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41010937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com