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
相关产品推荐
相关产品推荐

