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

如何通过Python字典检测JSON文件中的重复交易记录

JSON交易记录重复值检测实现方案

现有思路评估

  • 你当前按交易日期先做分组的思路是可行的,重复交易基本都发生在同一自然日,提前分桶可以大幅减少后续比对的计算量,整体方向正确
  • 现有代码存在几个可修正的问题:
    • 冗余导入了未使用的_task_print_stack,可以直接删除
    • 文件读取没有使用上下文管理器,直接open如果脚本中途报错会导致文件句柄无法正常释放
    • 仅完成了日期分组逻辑,没有实现同日期下的重复判定
    • 遍历分组时加了break,只会输出第一个日期的交易数据,无法遍历全量记录

重复判定规则

判定潜在重复交易的核心逻辑:同一日期下,交易金额amount、交易原始描述original_description完全一致的记录,判定为重复。

注意:transaction_id是每条交易的全局唯一标识,重复交易的ID一定不相同,因此该字段仅作为结果输出项,不参与重复判定逻辑。

可直接运行的优化后代码

import json
from collections import defaultdict

# 读取解析JSON文件,上下文管理器自动处理文件关闭
with open("42525022_formatted-1.json", "r", encoding="utf-8") as f:
    parsed_data = json.load(f)
# 提取交易列表
transactions = parsed_data["report"]["items"][0]["accounts"][0]["transactions"]

# 按日期对交易做分桶
txn_by_date = defaultdict(list)
for txn in transactions:
    txn_by_date[txn["date"]].append(txn)

duplicate_result = []
# 逐日期排查重复交易
for date, same_date_txns in txn_by_date.items():
    # 以(金额, 原始描述)为key对同日期交易分组
    group_key_map = defaultdict(list)
    for txn in same_date_txns:
        check_key = (txn["amount"], txn["original_description"])
        group_key_map[check_key].append(txn)
    # 筛选组内记录数≥2的,即为重复交易组
    for txn_group in group_key_map.values():
        if len(txn_group) >= 2:
            for dup_txn in txn_group:
                duplicate_result.append({
                    "date": dup_txn["date"],
                    "amount": dup_txn["amount"],
                    "description": dup_txn["original_description"],
                    "transactionID": dup_txn["transaction_id"]
                })

# 打印所有重复记录
for item in duplicate_result:
    print(item)

后续优化方向

  • 匹配容错优化:实际交易场景中,同一笔交易的原始描述可能带随机订单号、时间戳后缀,可以先对描述做预处理(转小写、去除特殊字符、截断固定长度无意义后缀)后再做比对,降低漏判率
  • 性能优化:如果交易数据量较大(10万条以上),可以直接用(日期, 金额, 预处理后的描述)作为全局key做一次分组,不需要两层循环,代码更简洁、运行速度更快
  • 结果易用性优化:可以给同一组重复交易标记相同的重复组ID,将结果导出为CSV/JSON文件,方便后续人工核验
  • 鲁棒性优化:读取文件、解析字段时增加异常捕获,避免文件格式损坏、字段缺失导致脚本直接崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:25:06