为了账号安全,请及时绑定邮箱和手机立即绑定

过滤字典列表中的项目

过滤字典列表中的项目

一只甜甜圈 2024-01-24 20:52:34
在Python中,我希望编辑字典列表,以便它们在每个字典中都具有相同的对应项目。例如,这是我的字典列表中最初的内容:[{'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'}, {'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock', 'accuracy': 0.9196}, {'name': 'analogue', 'accuracy': 0.96998}, {'name': 'clock', 'accuracy': 0.99748}]我想要的是只有具有相应“名称”的字典,但删除了所有“准确性”实例。基本上,我希望返回以下内容:[{'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'}, {'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock'}, {'name': 'analogue'}, {'name': 'clock'}]请帮助指导我如何做到这一点!
查看完整描述

3 回答

?
开满天机

TA贡献1786条经验 获得超12个赞

使用列表理解:


dl = [{'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'}, 

{'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock', 'accuracy': 0.9196}, 

{'name': 'analogue', 'accuracy': 0.96998}, {'name': 'clock', 'accuracy': 0.99748}]

nl = [{'name': x['name']} for x in dl]

print(nl)


查看完整回答
反对 回复 2024-01-24
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

如果您想以一般方式执行此操作,您可以获取字典中键的交集,然后根据这些键构建一个新列表:


list_o_dicts = [

    {'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'}, 

    {'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock', 'accuracy': 0.9196}, 

    {'name': 'analogue', 'accuracy': 0.96998}, {'name': 'clock', 'accuracy': 0.99748}

]


common_keys = set.intersection(*map(set, list_o_dicts)) # just {'name'}


output = [{k:d[k] for k in common_keys} for d in list_o_dicts]

输出:


[{'name': 'clock'},

 {'name': 'hours'},

 {'name': 'nosotros'},

 {'name': 'pinkfloyd'},

 {'name': 'time'},

 {'name': 'alarm clock'},

 {'name': 'analogue'},

 {'name': 'clock'}]

如果您有多个公用密钥,这仍然有效:


list_o_dicts = [

    {'name': 'alarm clock', 'accuracy': 0.9196}, 

    {'name': 'analogue', 'accuracy': 0.96998}, 

    {'name': 'clock', 'accuracy': 0.99748}

]


common_keys = set.intersection(*map(set, list_o_dicts)) # {'accuracy', 'name'}


[{k:d[k] for k in common_keys} for d in  list_o_dicts]

出去:


[{'accuracy': 0.9196, 'name': 'alarm clock'},

 {'accuracy': 0.96998, 'name': 'analogue'},

 {'accuracy': 0.99748, 'name': 'clock'}]


查看完整回答
反对 回复 2024-01-24
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

in_list = [{'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'}, 

{'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock', 'accuracy': 0.9196}, 

{'name': 'analogue', 'accuracy': 0.96998}, {'name': 'clock', 'accuracy': 0.99748}]

new_list = [{k: v for k,v in ele.items() if k == 'name'} for ele in in_list]

print(new_list)

输出:


[{'name': 'clock'}, {'name': 'hours'}, {'name': 'nosotros'}, {'name': 'pinkfloyd'}, {'name': 'time'}, {'name': 'alarm clock'}, {'name': 'analogue'}, {'name': 'clock'}]



查看完整回答
反对 回复 2024-01-24
  • 3 回答
  • 0 关注
  • 39 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信