首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python根据值迭代和删除列表中的键

Python根据值迭代和删除列表中的键
EN

Stack Overflow用户
提问于 2018-07-20 05:28:14
回答 3查看 99关注 0票数 -3

我有一个JSON文件(test.json),它有一个列表:

代码语言:javascript
复制
[
    {
        "Action": "ADD",
        "Properties": {
            "Type": "New",
            "Value": "List"
        }
    },
    {
        "Action": "REMOVE",
        "Properties": {
            "Type": "New",
            "Value": "Image"
        }
    },
    {
        "Action": "ADD",
        "Properties": {
            "Type": "New",
            "Value": "Text"
        }
    }
]

我需要遍历列表并删除包含'REMOVE‘的键(item),即item’‘Action’== "REMOVE“。

删除后应如下所示:

代码语言:javascript
复制
[
    {
        "Action": "ADD",
        "Properties": {
            "Type": "New",
            "Value": "List"
        }
    },
    {
        "Action": "ADD",
        "Properties": {
            "Type": "New",
            "Value": "Text"
        }
    }
]

我用它来打印项目。如何删除该项目?

代码语言:javascript
复制
with open('test.json') as json_data:
    data = json.load(json_data)
    for item in data:
        if item['Action'] == "REMOVE":
            print item
EN

回答 3

Stack Overflow用户

发布于 2018-07-20 05:34:53

当你需要过滤列表时,你应该使用列表理解:

代码语言:javascript
复制
with open('test.json') as json_data:
    data = json.load(json_data)
    filtered_data = [item for item in data if item['Action'] != 'REMOVE']
票数 2
EN

Stack Overflow用户

发布于 2018-07-20 23:18:05

我最终使用了这个:

代码语言:javascript
复制
with open('test.json') as json_data:
    data = json.load(json_data)
    for index, item in enumerate(data):
        if item['Action'] == "REMOVE":
            del( data[index] )
            with open('test.json', "w") as outfile:
                outfile.write(json.dumps(data, indent=4))
票数 0
EN

Stack Overflow用户

发布于 2018-07-20 05:38:11

代码语言:javascript
复制
data = [x for x in json_data if not x['ACTION'] == 'REMOVE']

获取只包含所需项目的新列表的另一种方法。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51431974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档