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

如何在Python字典中匹配指定短语并输出对应键?代码纠错

问题:根据指定短语匹配字典中对应的键

需求:在给定的dict_ep字典中,找到指定短语(如'FRAUDED BILL')对应的字典键(例如匹配该短语时输出EP1_2)。

原代码

dict_ep = {'EP1_2':['FRAUDED BILL','IMPROPER BILLING - FRAUDED CARD (CARDS)','EMBEZZLEMENT','FRAUD'], 
            'EP1_4':['2nd COPY OF CONTRACT (CONSIGNEE)','ACCIDENT WITH DISPOSED VEHICLE'],
            'EP1_6':['BANK STRIKE'],
            'EP1_8':['ACCESS TO BALANCE AND CARD LIMIT','PAYMENT AGREEMENT']}

problem = ('frauded bill').upper()


for i in dict_ep:
    if problem == dict_ep.keys():
        print('EP found')
    else:
        print('EP no exist, try again!')

错误运行结果

EP no exist, try again!
EP no exist, try again!
EP no exist, try again!
EP no exist, try again!

错误排查

  • 判断逻辑完全错误:代码中用problem == dict_ep.keys()将目标字符串和字典的键集合做相等比较,类型和内容均不匹配,永远不会成立。
  • 未访问对应的值列表:循环遍历字典键时,没有取出键对应的短语列表,无法检查目标短语是否存在。
  • 输出逻辑错误:每次循环都输出结果,而非找到匹配项时输出对应键、未找到时仅输出一次提示。

修正后的代码

精确匹配版本(完全匹配短语)

dict_ep = {'EP1_2':['FRAUDED BILL','IMPROPER BILLING - FRAUDED CARD (CARDS)','EMBEZZLEMENT','FRAUD'], 
            'EP1_4':['2nd COPY OF CONTRACT (CONSIGNEE)','ACCIDENT WITH DISPOSED VEHICLE'],
            'EP1_6':['BANK STRIKE'],
            'EP1_8':['ACCESS TO BALANCE AND CARD LIMIT','PAYMENT AGREEMENT']}

problem = ('frauded bill').upper()

found = False
for ep_key, phrases in dict_ep.items():
    if problem in phrases:
        print(f"匹配到的EP键:{ep_key}")
        found = True
        break  # 找到第一个匹配项后停止循环,需所有匹配可删除此句

if not found:
    print('EP no exist, try again!')

模糊匹配版本(短语包含目标关键词)

如果需要支持模糊匹配(比如目标短语是'FRAUD'时匹配所有包含该词的项),可修改判断逻辑:

dict_ep = {'EP1_2':['FRAUDED BILL','IMPROPER BILLING - FRAUDED CARD (CARDS)','EMBEZZLEMENT','FRAUD'], 
            'EP1_4':['2nd COPY OF CONTRACT (CONSIGNEE)','ACCIDENT WITH DISPOSED VEHICLE'],
            'EP1_6':['BANK STRIKE'],
            'EP1_8':['ACCESS TO BALANCE AND CARD LIMIT','PAYMENT AGREEMENT']}

problem = ('fraud').upper()

found = False
for ep_key, phrases in dict_ep.items():
    for phrase in phrases:
        if problem in phrase:
            print(f"匹配到的EP键:{ep_key}")
            found = True
            break  # 找到当前EP下的匹配后停止检查该EP的其他短语
    if found:
        break  # 找到第一个匹配的EP后停止循环,需所有匹配可删除此句

if not found:
    print('EP no exist, try again!')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:50:38