使用itemgetter遍历特定的字典键

时间:2020-04-16 09:38:49

标签: python python-3.x dictionary

我有一个具有以下结构的字典:

global_results = {
                  'group1': {
                             'Assessnent': "PASSED"
                             ...
                             },
                  'group2': {
                             'Assessment': "PASSED"
                             ...
                             },
                   ...
                  }

问题是我不知道我有多少个小组,我需要检查是否所有的 assessments =“ PASSED”

到目前为止,我已经完成了以下操作,但是看起来很丑

for key in global_results.keys():
    count=0
    if global_results[key]["Assessment"] == "PASSED":
        count += 1    

if count == len(list(global_results.keys())):
    global_results["FINAL"] = "PASSED"
else: 
    global_results["FINAL"] = "FAILED"

我知道operator.itemgetter对简化代码很有用。谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用all()函数来避免计数:

if all(group["Assessment"] == "PASSED" for group in global_results.values()):
    global_results["FINAL"] = "PASSED"
else:
    global_results["FINAL"] = "FAILED"

您可以使用自己的代码,但可以进行一些简化,例如循环使用值而不是键,以及可以使用字典本身的len

count = 0
for group in global_results.values():
    if group["Assessment"] == "PASSED":
        count += 1    

if count == len(global_results):
    global_results["FINAL"] = "PASSED"
else: 
    global_results["FINAL"] = "FAILED"