簡體   English   中英

如何刪除詞典列表中的項目?

[英]How do I delete an item within a list in a dictionary?

我正在嘗試清理數據以進行分析

這是JSON示例

response.json() = [{'count': 19804, 
    'next': {'limit': 1, 'offset': 1}, 
    'previous': None, 

'results':
 [{'id': '334455', 
    'custom_id': '112', 
    'company': 28, 
    'company_name': 'Sunshine and Flowers', 
    'delivery_address': '34 olive beach house, #01-22, 612345', 

    'delivery_timeslot': {'lower': '2019-12-06T10:00:00Z', 'upper': '2019-12-06T13:00:00Z', 'bounds': '[)'}, 

    'sender_name': 'Edward Shine', 
    'sender_email': '', 
    'sender_contact': '91234567', 
    'removed': None, 
    'recipient_name': 'Mint Shine', 
    'recipient_contact': '91234567', 
    'notes': '', 

    'items': [{'id': 21668, 'name': 'Loose hair flowers', 'quantity': 1, 'metadata': {}, 'removed': None}, {'id': 21667, 'name': "Groom's Boutonniere", 'quantity': 1, 'metadata': {}, 'removed': None}, {'id': 21666, 'name': 'Bridal Bouquet', 'quantity': 1, 'metadata': {}, 'removed': None}], 

    'latitude': '1.28283838383642000000', 
    'longitude': '103.2828037266201000000', 
    'created': '2019-08-15T05:40:30.385467Z', 
    'updated': '2019-08-15T05:41:27.930110Z', 
    'status': 'pending', 
    'verbose_status': 'Pending', 

    'logs': [{'id': 334455, 'order': '50c402d8-7c76-45b5-b883-e2fb887a507e', 'order_custom_id': '112', 'order_delivery_address': '34 olive beach house, #01-22, 6123458', 'order_delivery_timeslot': {'lower': '2019-12-06T10:00:00Z', 'upper': '2019-12-06T13:00:00Z', 'bounds': '[)'}, 'message': 'Order was created.', 'failure_reason': None, 'success_code': None, 'success_description': None, 'created': '2019-08-15T05:40:30.431790Z', 'removed': None}, {'id': 334455, 'order': '50c402d8-7c76-45b5-b883-e2fb887a507e', 'order_custom_id': '112', 'order_delivery_address': '34 olive beach house, #01-22, 612345', 'order_delivery_timeslot': {'lower': '2019-12-06T10:00:00Z', 'upper': '2019-12-06T13:00:00Z', 'bounds': '[)'}, 'message': 'Order is pending.', 'failure_reason': None, 'success_code': None, 'success_description': None, 'created': '2019-08-15T05:40:30.433139Z', 'removed': None}], 

    'reschedule_requests': [],
    'signature': None}]]

我已經嘗試過此代碼,並且可以正常工作,它會相應刪除指定的項目。

 data = response.json()
    del data['count']
    del data['next']
    del data['previous']
    del data['results'][0]['logs']
    print(data)

但是,當我嘗試刪除“項目”時,我只希望保留“名稱”,因此它不起作用。

這是我的代碼,刪除“項目”中除“名稱”之外的所有內容

del data['results'][0]['items']['id']['quantity']['metadata']['removed']

我想要的輸出是:

'items': 
[{'name': 'Loose hair flowers'}, 
{''name': "Groom's Boutonniere"}, 
{'name': 'Bridal Bouquet'}]

我該怎么做?

無需從JSON響應中刪除數據,只需迭代JSON響應並使用列表推導獲取項目數據。

例如

items = [{'name' :x['name']} for x in data[0]['results'][0]['items']]
print(items)

O / P:

[{'name': 'Loose hair flowers'}, {'name': "Groom's Boutonniere"}, 
{'name': 'Bridal Bouquet'}]

或者,如果您想更改響應並且項目僅保留預期的輸出數據,請重新分配它。

data[0]['results'][0]['items'] = items

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM