0

如果字典列表中存在输入,我正在编写一个 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)

这里的问题是,如果输入是“红色”,“无值”会打印两次,而“匹配”会打印一次。

我的用例是如果字典列表中不存在输入,它应该只打印一次“无值”。如果输入存在代码应该用新值更新下一个键并打印一次“匹配”。

我在堆栈溢出中遇到过其他问题。我找不到这种情况的答案。

请帮忙

4

1 回答 1

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语句,但可以使用布尔标志。要检查字符串是否等于任何字符串列表,您可以成员资格测试运算符 ( 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')
于 2019-05-28T16:08:06.380 回答