Python3 利用filter()函数过滤/筛选/批量删除 字典/dict中的元素 |
您所在的位置:网站首页 › 筛选出来的重复数据,如何批量删除 › Python3 利用filter()函数过滤/筛选/批量删除 字典/dict中的元素 |
需求
原字典如下: {'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 |