本文旨在指导读者如何在python中高效地从复杂的嵌套字典与列表结构中提取特定数据,并应用条件过滤。我们将通过一个实际案例,详细演示如何遍历多层数据结构,精准定位所需信息,并根据业务逻辑(如排除特定条件的数据)对结果进行筛选,最终生成一个结构清晰、符合要求的数据集。
在Python开发中,我们经常需要处理来自API响应、配置文件或JSON文件等来源的复杂数据结构。这些数据通常以嵌套的字典和列表形式呈现,如何从中精准地提取所需信息并进行清洗,是数据处理的关键环节。本教程将以一个典型的嵌套数据结构为例,演示如何通过迭代和条件判断,实现数据的提取与过滤。
假设我们有一个名为 repo 的Python字典,其结构如下所示。我们的目标是从这个结构中提取 balances 列表下的每个资产信息,但仅保留 asset、free 和 locked 这三个字段,并且需要排除那些 free 和 locked 值都为 '0' 的条目。
repo = {
'code': 200,
'msg': '',
'snapshotVos': [
{
'data': {
'balances': [
{'asset': 'ADD', 'free': '10', 'locked': '0'},
{'asset': 'RDP', 'free': '0', 'locked': '0'},
{'asset': 'SHIB', 'free': '0', 'locked': '947415'}
],
'totalAsset': '152'
},
'type': 'spot',
'updateTime': 1703807999000
}
]
}为了实现目标,我们需要执行以下步骤:
以下是实现上述逻辑的Python代码:
repo = {
'code': 200,
'msg': '',
'snapshotVos': [
{
'data': {
'balances': [
{'asset': 'ADD', 'free': '10', 'locked': '0'},
{'asset': 'RDP', 'free': '0', 'locked': '0'},
{'asset': 'SHIB', 'free': '0', 'locked': '947415'}
],
'totalAsset': '152'
},
'type': 'spot',
'updateTime': 1703807999000
}
]
}
# 用于存储最终结果的列表
filtered_balances_data = []
# 1. 遍历 'snapshotVos' 列表
for snapshot_entry in repo.get('snapshotVos', []):
# 2. 从每个 snapshot_entry 中获取 'data' 字典
# 使用 .get() 方法可以避免键不存在时引发 KeyError
data_entry = snapshot_entry.get('data', {})
# 3. 从 'data_entry' 中获取 'balances' 列表
balances_list = data_entry.get('balances', [])
# 4. 遍历 'balances' 列表中的每一个资产字典
for balance_item in balances_list:
# 5. 获取 'free' 和 'locked' 的值,同样使用 .get() 确保健壮性
# 默认值设为 '0' 以便进行后续的条件判断,即使键缺失
free_value = balance_item.get('free', '0')
locked_value = balance_item.get('locked', '0')
# 6. 应用过滤条件:如果 'free' 和 'locked' 都不是 '0',则保留
# 或者说,如果不是两者都为 '0',则保留
if not (free_value == '0' and locked_value == '0'):
# 7. 提取所需的 'asset', 'free', 'locked' 字段
extracted_item = {
'asset': balance_item.get('asset'),
'free': free_value,
'locked': locked_value
}
# 8. 将提取出的字典添加到结果列表中
filtered_balances_data.append(extracted_item)
# 打印最终结果
print(filtered_balances_data)dict.get(key, default_value) 的使用: 在代码中,我们大量使用了字典的 get() 方法(例如 repo.get('snapshotVos', []))。这是一个非常重要的最佳实践,它允许你在尝试访问字典中可能不存在的键时,提供一个默认值(例如空列表 [] 或空字典 {}),而不是直接引发 KeyError 异常,从而增强了代码的健壮性。
嵌套循环: 由于数据是多层嵌套的,我们需要使用嵌套的 for 循环来逐层深入。外层循环遍历 snapshotVos 列表,内层循环则遍历每个 snapshot_entry 中的 balances 列表。
条件判断与过滤: 过滤逻辑 if not (free_value == '0' and locked_value == '0'): 精确地实现了需求。它排除了那些 free 和 locked 字段值都为字符串 '0' 的条目。请注意,这里是字符串 '0' 的比较,如果数据类型是数字,则应转换为 int(free_value) == 0 进行比较。
数据类型一致性: 在进行条件判断时,务必注意数据类型。本例中 free 和 locked 的值是字符串 '0',因此比较时也使用字符串。如果它们是整数,则需要先进行类型转换,例如 int(free_value)。
结果结构: 最终的结果 filtered_balances_data 是一个列表,其中每个元素都是一个字典,只包含 asset、free 和 locked 这三个键值对,这符合了“需要键”的要求。
执行上述代码,将得到以下输出:
[{'asset': 'ADD', 'free': '10', 'locked': '0'}, {'asset': 'SHIB', 'free': '0', 'locked': '947415'}]可以看到,{'asset': 'RDP', 'free': '0', 'locked': '0'} 这个条目因为满足过滤条件而被成功移除。
通过本教程,我们学习了如何在Python中处理复杂的嵌套字典和列表结构。掌握 dict.get() 方法、嵌套循环以及精确的条件判断是高效数据提取和过滤的关键。在实际开发中,这些技术能够帮助我们从海量数据中筛选出有价值的信息,为后续的数据分析和业务逻辑处理打下坚实的基础。记住,代码的健壮性和可读性同样重要,合理使用 get() 方法和清晰的变量命名能够显著提升代码质量。
# python
# js
# json
# app
# 配置文件
# 键值对
# red
相关文章:
建站之星安装后界面空白如何解决?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
建站之星与建站宝盒如何选择最佳方案?
如何登录建站主机?访问步骤全解析
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
外贸公司网站制作哪家好,maersk船公司官网?
购物网站制作公司有哪些,哪个购物网站比较好?
网站制作服务平台,有什么网站可以发布本地服务信息?
如何在阿里云域名上完成建站全流程?
小程序网站制作需要准备什么资料,如何制作小程序?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
北京的网站制作公司有哪些,哪个视频网站最好?
已有域名和空间如何快速搭建网站?
网页设计与网站制作内容,怎样注册网站?
手机网站制作与建设方案,手机网站如何建设?
宝塔新建站点为何无法访问?如何排查?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
如何快速搭建二级域名独立网站?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
建站主机与服务器功能差异如何区分?
css网站制作参考文献有哪些,易聊怎么注册?
股票网站制作软件,网上股票怎么开户?
建站之星好吗?新手能否轻松上手建站?
如何高效完成自助建站业务培训?
网站网页制作专业公司,怎样制作自己的网页?
如何制作网站标识牌,动态网站如何制作(教程)?
深圳网站制作培训,深圳哪些招聘网站比较好?
定制建站流程步骤详解:一站式方案设计与开发指南
学校免费自助建站系统:智能生成+拖拽设计+多端适配
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
如何快速选择适合个人网站的云服务器配置?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
网站制作公司排行榜,四大门户网站排名?
如何通过NAT技术实现内网高效建站?
建站主机核心功能解析:服务器选择与网站搭建流程指南
如何零成本快速生成个人自助网站?
Java解压缩zip - 解压缩多个文件或文件夹实例
北京制作网站的公司,北京铁路集团官方网站?
深圳网站制作的公司有哪些,dido官方网站?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
西安大型网站制作公司,西安招聘网站最好的是哪个?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
如何确认建站备案号应放置的具体位置?
如何通过万网虚拟主机快速搭建网站?
如何快速生成可下载的建站源码工具?
常州企业网站制作公司,全国继续教育网怎么登录?
常州自助建站费用包含哪些项目?
如何选择域名并搭建高效网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。