Python3:验证excel_headers元素是否全部存在于headers字典中
问题解决:校验列表元素是否全部存在于字典键中
你的原代码逻辑完全错误,问题出在这几点:
- 用
enumerate(excel_headers)拿到的idx是列表的索引(0、1、2),但headers是字典,不能通过数字索引访问键,headers[idx]会直接抛出KeyError(比如headers[0]根本不存在)。 - 就算能访问,
headers[idx][0]也毫无意义——你的字典值是数字,数字没有索引操作,这会引发TypeError。
要实现「确认excel_headers中的每个元素都存在于headers的键中」的需求,直接遍历excel_headers的每个元素,检查是否在headers的键集合里即可(字典的in操作默认校验键):
excel_headers = [ 'Name', 'Age', 'Sex', ] headers = {'Name' : 1, 'Age': 2, 'Sex': 3, 'Whatever': 4} # 正确实现 all_present = all(header in headers for header in excel_headers) print(all_present) # 输出:True
这个逻辑里,all()会逐个验证每个header是否在headers的键中,只要有一个元素不存在就返回False,全部存在则返回True,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者latenight
相关产品推荐
相关产品推荐

