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

Python判断值是否存在于字典 代码无法识别已存在值且重置为0问题求解

问题原因
  • 存在性判断逻辑错误:你的代码将输入的字符串作为字典的键存储,但判断存在性时用了mylist[i] in mydict.values(),也就是去匹配字典的值而非键。第一次处理完输入后字典值为{'3':5, '2':2, '1':0},values()返回的是数值列表[5,2,0],后续输入的字符串'3'自然不在该列表中,所以会触发else分支将已有键'3'的值重置为0。
  • 同组输入重复值重复赋值:未修复判断逻辑的前提下,同一次输入里的重复值(比如首次输入的两个'3')都会触发else分支,反复覆盖对应键的初始值。
修复方案

仅需要将存在性判断的代码行,从判断是否在values()中改为判断是否为字典的键即可:

# 原错误代码
# if mylist[i] in mydict.values():
# 修改后代码
if mylist[i] in mydict:
完整修改后代码
mydict = {}

while True:
    num = int(input())
    if num == 0 :
        break
    while num > 0:
        inp = input().split(" ")
        mylist = inp # split本身已经返回列表,无需额外转换

        for i in range(0,len(mylist)):
            # 仅修改这一行的判断逻辑
            if mylist[i] in mydict:
                print(f"Yes, Value: '{mylist[i]}' exists in dictionary")
            else:
                print(f"No, Value: '{mylist[i]}' does not exists in dictionary")
                mydict[mylist[i]] = 0

        print(mydict)

        for i in range(0,len(mylist)):
            if i == 0 :
                mydict[mylist[i]] += 3
            if i == 1 :
                mydict[mylist[i]] += 2
            if i == 2 :
                mydict[mylist[i]] += 1

        print(mydict)
        num-=1

修改后运行结果和你期望的输出完全一致。

内容的提问来源于stack exchange,提问作者Dr. Erfox

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:06:05