python - 如何删除字典列表中的项目?
问题描述
我正在尝试清理我的数据以执行分析
这是 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)
输出/输出:
[{'name': 'Loose hair flowers'}, {'name': "Groom's Boutonniere"},
{'name': 'Bridal Bouquet'}]
或者,如果您想更改响应并且项目仅保留预期的输出数据,则重新分配它。
data[0]['results'][0]['items'] = items
推荐阅读
- pandas - RDD vs Pandas Dataframe vs Direct Read 创建 Spark DataFrame
- javascript - 如何正确将照片添加到 Vue Carousel 3D 滑块?
- asp.net - 将 asp.net Core REACT 应用程序部署到 AWS Beanstalk 时出现 IdentityServer 错误
- php - 如何将拖动动作保存到数据库中
- memory - 如何解决 IAR 中的“链接器部分放置错误”
- javascript - 如何像 React.js 一样在 Java 中进行实时值更改
- python - 关闭在 python 的新窗口中打开的子进程
- python - 我收到 pyinstaller 的错误,从 py 到 exe 的转换工作正常,但是当我尝试打开它时出现错误
- css - :not() 用于 httml[lang] 的伪类不起作用
- android - Flutter 从 firebase 填充 DropDown 中的数据