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

Python字典列表中Receiver字段后缀匹配筛选及进阶需求

问题与解决方案

初始需求:筛选Receiver后缀重复的字典

问题描述

给定字典列表,需仅保留Receiver字段最后3个字符与其他字典该字段存在重复的项。原代码因嵌套循环重复遍历,导致结果重复且包含后缀唯一的项,不符合预期。

原代码问题分析

原代码通过双重循环逐个匹配后缀,每匹配到一次就将对应字典加入结果列表,导致同一字典被多次添加;同时未过滤掉后缀仅出现一次的项(如bob333、kyle444等)。

正确实现

先统计所有Receiver后缀(最后3字符)的出现频次,再筛选出后缀频次>1的字典:

transactions = [
{"Receiver":"alice111","Amount":50},
{"Receiver":"alice222","Amount":60},
{"Receiver":"alice111","Amount":70},
{"Receiver":"bob111","Amount":50},
{"Receiver":"bob222","Amount":150},
{"Receiver":"bob333","Amount":100},
{"Receiver":"kyle444","Amount":260},
{"Receiver":"richard555","Amount":260}
]

# 统计每个后缀的出现次数
suffix_counts = {}
for item in transactions:
    suffix = item["Receiver"][-3:]
    suffix_counts[suffix] = suffix_counts.get(suffix, 0) + 1

# 筛选后缀出现次数>1的项
result = [item for item in transactions if suffix_counts[item["Receiver"][-3:]] > 1]
print(result)

输出结果:

[{"Receiver":"alice111","Amount":50},{"Receiver":"alice222","Amount":60},{"Receiver":"alice111","Amount":70},{"Receiver":"bob111","Amount":50},{"Receiver":"bob222","Amount":150}]

进阶需求:筛选后缀相同且前缀不同的字典

问题描述

需保留Receiver字段最后3个字符相同,且前缀(最后3字符之前的部分)不同的字典。即某个后缀对应的前缀集合至少包含2个不同值时,所有属于该后缀的字典都需要保留。

正确实现

先统计每个后缀对应的前缀集合,再筛选出后缀对应的前缀数量>=2的字典:

transactions1 = [
{"Receiver":"alice111","Amount":50},
{"Receiver":"alice111","Amount":70},
{"Receiver":"bob222","Amount":50},
{"Receiver":"bob222","Amount":150},
{"Receiver":"bob222","Amount":100},
{"Receiver":"richard111","Amount":260},
{"Receiver":"bob333","Amount":100},
{"Receiver":"alice333","Amount":300},
]

# 统计每个后缀对应的前缀集合
suffix_prefix_map = {}
for item in transactions1:
    receiver = item["Receiver"]
    suffix = receiver[-3:]
    prefix = receiver[:-3]
    if suffix not in suffix_prefix_map:
        suffix_prefix_map[suffix] = set()
    suffix_prefix_map[suffix].add(prefix)

# 筛选后缀对应的前缀数量>=2的项
result = [item for item in transactions1 if len(suffix_prefix_map[item["Receiver"][-3:]]) >= 2]
print(result)

输出结果:

[{"Receiver":"alice111","Amount":50}, {"Receiver":"alice111","Amount":70},{"Receiver":"richard111","Amount":260},{"Receiver":"bob333","Amount":100},{"Receiver":"alice333","Amount":300}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:35:29