【发布时间】:2019-05-29 08:10:27
【问题描述】:
如果字典列表中存在输入,我正在编写一个 python 代码来更新字典列表。如果字典列表中不存在输入,则应打印“整个列表中不存在值”或执行一些其他操作。下面是我写的代码
a = [{'main_color': 'red', 'second_color': 'blue'},
{'main_color': 'yellow', 'second_color': 'green'},
{'main_color': 'blue', 'second_color': 'blue1'}]
conType = input('Enter main color: ')
color=input('Enter secondary color :')
conType1= input('Enter another main color: ')
color1=input('Enter another secondary color: ')
valueDict={}
if conType:
valueDict[conType]=color
if conType1:
valueDict[conType1]=color1
print(valueDict)
for d in a:
for i,j in valueDict.items():
if d['main_color'] == i:
print('matched')
d['second_color'] = j
break
else:
print('no value')
print(a)
下面是我尝试执行上面代码时的输出
Enter main color: red
Enter secondary color :black
Enter another main color: yellow
Enter another secondary color: white
{'red': 'black', 'yellow': 'white'}
matched
matched
no value
[{'main_color': 'red', 'second_color': 'black'}, {'main_color': 'yellow', 'second_color': 'white'}, {'main_color': 'blue', 'second_color': 'blue1'}]
这里的问题是“没有价值”被打印出来。 在我的用例中,根本不应该打印任何值。
我经历过Searching array reports "not found" even though it's found和https://docs.python.org/3/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops
我不确定为什么会打印“无价值”。如果所有输入都存在于字典列表中,我正在寻找一种避免执行 else 块的方法。 请帮忙。
【问题讨论】:
标签: python list loops dictionary