我正在修改一个小的脚本来读取序列号,而我在努力寻找解决方案,为什么脚本会如此工作。我的目标是输入一个序列号,并将其与列表中的内容进行比较。 config_parameters -当内容匹配时,它应该打印出test1(仅用于测试目的):< / p>
sn_input = input("Enter Serial Number :")
config_parameters = [
{'hostname': 'switch-a', 'domain_name': 'domain.local', 'management_ip': '10.0.0.1', 'serial_number': '123'},
{'hostname': 'switch-b', 'domain_name': 'domain.local', 'management_ip': '10.0.0.2', 'serial_number': '456'},
{'hostname': 'switch-c', 'domain_name': 'domain.local', 'management_ip': '10.0.0.3', 'serial_number': '789'},
{'hostname': 'switch-d', 'domain_name': 'domain.local', 'management_ip': '10.0.0.4', 'serial_number': '134'}
]
if sn_input in config_parameters:
print('test1')
else:
print('wrong')
作为附加提示:列表中的{}来自词典,其内容已附加到列表中(带有.append-function)。
例如,当我输入 123 作为序列号(将安全保存为 sn_input )时,该序列号就是列表中元素的一部分config_parameters ,我会打印错误。那就是我要坚持的地方:为什么 123 存在于列表中,为什么还要进入else语句?即使我尝试输入完整的条目,也很容易打印出错误。为什么会达到这个目的,我该如何解决呢?
谢谢!
答案 0 :(得分:1)
您只需要测试输入是否与字典中的serial_number
项之一匹配,而不是整个字典即可。
if any(c['serial_number'] == sn_input for c in config_parameters):
print("test1")
else:
print("wrong")