首页 > 解决方案 > 如何从数组中的每个条目中删除一个属性?

问题描述

我创建了一个数组,每个元素都填充了我从 dynamodb 收集的 json(dict) 条目。

我想删除每个条目中的顶级属性之一。我认为我面临的问题是价值是一个列表,但我不太确定。

我尝试了几种使用循环和切片的方法,但似乎没有什么对我有用。

数组示例:

[
    {
        "Item": {
            "id": "uuid",
            "event": {
                "A": "1",
                "B": "2"            
            }
        },
        "ResponseMetadata": {
            "A": "1",
            "B": {
                "1": "A",
                "2": "B"
                },
            "C": "2"
        }
    },
    {
        "Item": {
            "id": "uuid",
            "event": {
                "A": "1",
                "B": "2"
            }
        },
        "ResponseMetadata": {
            "A": "1",
            "B": {
                "1": "A",
                "2": "B"
                },
            "C": "2"
        }
    }
]

这是我尝试的一个循环:

def format_result(result):
    i = 0
    for i in result:
        del i['ResponseMetadata']
        i += 1
    return result

我得到的错误是:TypeError:'str'对象不支持项目删除

还尝试了给出错误的 i.pop():AttributeError: 'str' object has no attribute 'pop'

标签: python

解决方案


这是我最后的做法:

def extract_events_to_array(elist):
    events_list = [get_user_event(event_id) for event_id in elist[:10]]
    return format_result(events_list)


def get_user_event(eventid):
    response = event_table.get_item(
        Key={"eventId": eventid}
    )
    return response


def format_result(events_list):
    for event in events_list:
        del event['ResponseMetadata']
    return events_list

推荐阅读