You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现从复杂字典中按key查找指定账户及余额

通用提取指定账户信息的实现方案

核心思路

抛弃硬编码索引的方式,改用按账户唯一标识(如账户ID、名称)匹配的逻辑遍历JSON结构——不管新增多少账户,只要传入目标账户的标识,就能自动定位并提取所需字段。

基础场景实现(单层账户数组)

假设接口返回的JSON中,账户数据是顶层数组(比如response.json()['accounts']),Python代码示例:

import requests

def extract_account_data(target_identifier, json_data, match_key="accountId"):
    """
    提取指定账户的glCode和openingBalance
    :param target_identifier: 要查找的账户标识(如ID、名称)
    :param json_data: 接口返回的完整JSON字典
    :param match_key: 用于匹配账户的字段名,按需替换(比如'accountName')
    :return: 包含目标字段的字典,未找到则返回空字典
    """
    for account in json_data.get("accounts", []):
        if account.get(match_key) == target_identifier:
            return {
                "glCode": account.get("glCode"),
                "openingBalance": account.get("openingBalance")
            }
    return {}

# 发起请求获取数据
resp = requests.get("你的接口地址")
raw_data = resp.json()

# 使用示例:提取ID为"ACC-001"的账户信息
target_account = extract_account_data("ACC-001", raw_data)
print(target_account)

复杂嵌套场景适配(递归遍历)

如果JSON存在多层嵌套(比如账户按部门分组嵌套),用递归遍历实现全域查找:

def recursive_find_account(target_key, target_val, current_node):
    # 检查当前节点是否是目标账户
    if isinstance(current_node, dict):
        if current_node.get(target_key) == target_val:
            return {
                "glCode": current_node.get("glCode"),
                "openingBalance": current_node.get("openingBalance")
            }
        # 递归遍历所有子节点
        for val in current_node.values():
            result = recursive_find_account(target_key, target_val, val)
            if result:
                return result
    # 处理数组类型的节点,遍历每个元素
    elif isinstance(current_node, list):
        for item in current_node:
            result = recursive_find_account(target_key, target_val, item)
            if result:
                return result
    return {}

# 使用示例:按账户名称查找
target_account = recursive_find_account("accountName", "市场部对公账户", raw_data)

方案优势

  • 无需修改核心逻辑:新增账户时,仅需传入对应的标识参数即可
  • 兼容结构变化:不管JSON层级、数组顺序如何调整,只要账户对象包含匹配字段和目标字段就能正常工作
  • 复用性强:可以把提取逻辑封装成工具函数,在多个业务场景中调用

内容的提问来源于stack exchange,提问作者Patrakov Kostiantyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 06:09:21