为列表获取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]