过滤字典列表中的项目

在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'}]

请帮助指导我如何做到这一点!


一只甜甜圈
浏览 53回答 3
3回答

开满天机

使用列表理解: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)

慕哥9229398

如果您想以一般方式执行此操作,您可以获取字典中键的交集,然后根据这些键构建一个新列表: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'}]

天涯尽头无女友

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'}]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python