Python3 利用filter()函数过滤/筛选/批量删除 字典/dict中的元素

您所在的位置:网站首页 筛选出来的重复数据,如何批量删除 Python3 利用filter()函数过滤/筛选/批量删除 字典/dict中的元素

Python3 利用filter()函数过滤/筛选/批量删除 字典/dict中的元素

2024-06-29 10:30| 来源: 网络整理| 查看: 265

需求

原字典如下:

{'1': {'type': 'A', 'id': 1}, '2': {'type': 'B', 'id': 2}, '3': {'type': 'C', 'id': 1}, '4': {'type': 'D', 'id': 2}, '5': {'type': 'D', 'id': 3}}

现在要求只保留其中'type'为'A'和'D'的元素,即处理后字典变为:

{'1': {'type': 'A', 'id': 1}, '4': {'type': 'D', 'id': 2}, '5': {'type': 'D', 'id': 3}}

代码为:

a = {'1': {'type': 'A', 'id': 1}, '2': {'type': 'B', 'id': 2}, '3': {'type': 'C', 'id': 1}, '4': {'type': 'D', 'id': 2}, '5': {'type': 'D', 'id': 3}} allowed_keys = ['A', 'D'] print(dict(filter(lambda x: x[1]['type'] in allowed_keys, a.items())))

运行结果:

{'1': {'type': 'A', 'id': 1}, '4': {'type': 'D', 'id': 2}, '5': {'type': 'D', 'id': 3}} 解析

map和filter是两个非常好用的批量处理可迭代对象的函数,但这里要注意:

1.传入的iterator是dict.items()而不是dict本身

2.dict.items()返回该dict的视图对象(view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。

视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。

我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。

dict.items()中的单个元素是一个tuple,第一个元素是key,第二个元素是value。

3.filter()返回的对象需要通过转换为dict后才是一个dict。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3