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

如何过滤字典列表,实现两级联动下拉的数据源处理?

字典列表分级过滤实现

原始数据

list_of_dict = [ 
{'label': '220_2_INTL_PRSTR_ET_619076', 'value': '220_2_INTL_PRSTR_ET_619076'}, 
{'label': '220_4_KAL_T2E_DOLE_344657', 'value': '220_4_KAL_T2E_DOLE_344657'}, 
{'label': '221_1_PB_520_REF_174049', 'value': '221_1_PB_520_REF_174049'},
{'label': '222_5_KAL_T2E_YT_344991', 'value': '222_5_KAL_T2E_YT_344991'}, 
{'label': '223_2_PB_520_REF_174050', 'value': '223_2_PB_520_REF_174050'}, 
{'label': '224_3_PB_520_REF_174051', 'value': '224_3_PB_520_REF_174051'}]

1. 获取第一个下拉菜单的唯一前缀

遍历数据提取每个条目的前3位数字,用集合去重后返回有序列表:

def get_unique_prefixes(data):
    prefixes = set()
    for item in data:
        prefix = item['label'][:3]
        prefixes.add(prefix)
    return sorted(prefixes)

# 调用示例
unique_prefixes = get_unique_prefixes(list_of_dict)
# 输出: ['220', '221', '222', '223', '224']

2. 根据选中前缀过滤完整选项

传入选中的前缀,筛选出所有label以该前缀开头的条目:

def filter_options_by_prefix(data, selected_prefix):
    return [item for item in data if item['label'].startswith(selected_prefix)]

# 调用示例:选中前缀'220'
filtered_options = filter_options_by_prefix(list_of_dict, '220')
# 输出:
# [
#  {'label': '220_2_INTL_PRSTR_ET_619076', 'value': '220_2_INTL_PRSTR_ET_619076'}, 
#  {'label': '220_4_KAL_T2E_DOLE_344657', 'value': '220_4_KAL_T2E_DOLE_344657'}
# ]

说明

  • 利用集合特性自动去重前缀,确保第一个下拉菜单的选项唯一
  • 使用startswith方法做前缀匹配,逻辑直观且适合大规模数据处理
  • 两个方法均为O(n)时间复杂度,处理大型字典列表时效率较高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:00:56