如果字典列表中存在输入,我正在处理python代码以更新字典列表。如果输入在字典列表中不存在,则应打印“整个列表中不存在值”或执行其他操作。 下面是我编写的代码
a = [{'main_color': 'red', 'second_color':'blue'},{'main_color': 'yellow', 'second_color':'green'},{'main_color': 'yellow', 'second_color':'blue'}]
print('Enter main color:')
conType=input()
for d in a:
if d['main_color']==conType:
print('matched')
d['second_color']='bluetooth'
else:
print('no value')
print(a)
这里的问题是,如果输入为“红色”,“无值”将被打印两次,而“匹配”将被打印一次。
我的用例是,如果输入在字典列表中不存在,则应该只打印一次“无值”。如果输入存在,则代码应使用新值更新下一个键并打印一次“匹配”。
我在堆栈溢出中遇到了其他问题。我找不到这种情况的答案。
请帮助
答案 0 :(得分:0)
有for .. else
条语句,您可以在此处使用:
a = [{'main_color': 'red', 'second_color': 'blue'},
{'main_color': 'yellow', 'second_color': 'green'},
{'main_color': 'yellow', 'second_color': 'blue'}]
conType = input('Enter main color: ')
for d in a:
if d['main_color'] == conType:
print('matched')
d['second_color'] = 'bluetooth'
break
else:
print('no value')
print(a)
UPD。
对不起,我想念列表中有多个具有相同main_color
的对象(感谢@HaleemurAli)。如果您不需要在匹配后中断循环,则可以不使用for .. else
语句,但是可以使用boolean标志。要检查字符串是否等于字符串列表中的任何一个,您可以membership test operator (in
):
a = [{'main_color': 'red', 'second_color': 'blue'},
{'main_color': 'yellow', 'second_color': 'green'},
{'main_color': 'blue', 'second_color': 'blue1'}]
conType = input('Enter main color: ')
conType1 = input('Enter another main color: ')
b = [conType, conType1]
matched = False
for d in a:
if d['main_color'] in b:
print('matched')
matched = True
d['second_color'] = 'bluetooth'
if not matched:
print('no value')