为列表获取Python字典的子集

为列表获取Python字典的子集,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有一个字典列表,如下所示: [{'name':1, 'id':2, 'otherstuff':3}, {'name':2, 'id':3, 'otherstuff':1}, {'name':3, 'id':1, 'otherstuff':2}] 如何仅将每个成员的特定键提取到另一个列表中 尝试获取以下信息: [{'name':1, 'id':2}, {'name':2, 'id':3}, {'name':3, 'id':1}] 初始化您需要的密钥列表: keys = {'name', 'i

我有一个字典列表,如下所示:

[{'name':1, 'id':2, 'otherstuff':3}, {'name':2, 'id':3, 'otherstuff':1}, {'name':3, 'id':1, 'otherstuff':2}]
如何仅将每个成员的特定键提取到另一个列表中

尝试获取以下信息:

[{'name':1, 'id':2}, {'name':2, 'id':3}, {'name':3, 'id':1}]

初始化您需要的密钥列表:

keys = {'name', 'id'}
列表中提取键值对
/
dict
理解

filtered_data = [{k : x[k] for k in x.keys() & keys} for x in data] # thanks, vaultah!

x.keys()&keys
位仅在python3.x中有效,因为
x.keys()
作为
集返回,并且交叉操作确保如果您尝试访问该特定子目录中不存在的密钥,则不会引发
KeyError

如何确定“特定密钥”?我更新了示例以使其更清晰。基本上,我有一堆不同的键,每个成员都有它们的值,但只是试图提取名称和id。或者
[{k:x[k]表示x中的k.keys()&keys}表示x中的x]