如果匹配密钥,则删除整个dict

2024-05-23 20:14:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉python,但仍然尝试在internet上搜索解决方案。但没有找到任何解决办法。以下是我要整理的数据:

{'Items': [
        {'event': 'active', 'options.target': 'items', 'meta.timestamp': 1584826254819, 'id': 'foo111', 'userId': '1a938ea1-c65e-641a-5db5-5e56c7d8e90b', 'properties.new': 'ABC123'
        },
        {'event': 'active', 'options.target': 'previousTop', 'meta.timestamp': 1584820823598, 'id': 'foo111', 'userId': '1a938ea1-c65e-641a-5db5-5e56c7d8e90b', 'properties.new': 'KUCC00302'
        },
        {'_.from': 'engineEnd', '_.called': 'track', 'event': 'active', 'traits.id': 'foo333', 'options.target': 'items', 'properties.old': 'ABC123', 'meta.timestamp': 1584826518511, 'partner_resid': 'r-1a938ea1-c65e-641a-5db5-5e56c7d8e90b', 'id': 'foo111', 'userId': '1a938ea1-c65e-641a-5db5-5e56c7d8e90b', 'properties.new': 'ABC111', 'id': 'dc3775e0-6bbb-11ea-a789-4f693944a864', 'anonymousId': '3bd5eda3-8625-4b54-b02b-e24f78011ca7', '_.originalAction': 'track', 'type': 'track'}
}

我想修剪具有键的dictproperties.old 以下是我未能筛选的代码:

for item in json_result['Items']:
    if 'properties.old' in item:
        del item

对我做错了什么有什么建议吗


Tags: eventidtargetnewtrackpropertiesitemold
3条回答

这应该适用于您(您只需要遍历内部字典的键):

for idx, elem in enumerate(json_results['Items']):
    if 'properties.old' in elem.keys():
        del json_results['Items'][idx]
print(json_results)

产出:

{'Items': [{'event': 'active', 'options.target': 'items', 'meta.timestamp': 1584826254819, 'id': 'foo111', 'userId': '1a938ea1-c65e-641a-5db5-5e56c7d8e90b', 'properties.new': 'ABC123'}, {'event': 'active', 'options.target': 'previousTop', 'meta.timestamp': 1584820823598, 'id': 'foo111', 'userId': '1a938ea1-c65e-641a-5db5-5e56c7d8e90b', 'properties.new': 'KUCC00302'}]}

嘿,你失败了,因为你正在删除循环中的本地项变量,而不是列表元素。尝试在索引上迭代并使用pop或remove

        > >>> a=list(range(10))
        > >>> for i in a:       
                  del i    
        > >>> a 
          [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        > >>>
<>你可以考虑创建一个列表理解的新对象。 看看这一行:

result = { 'Items' : [dic for dic in json_result['Items'] if not 'properties.old' in dic] }

相关问题 更多 >