我确实有一个ditcs的字典; 这需要按照FAIL组首先出现在dict中然后传递的方式进行排序(即使有一个“FAIL”条件,它们应该组合在一起)。
添加更多详细信息 如果我按照我想做的值的字母顺序排序
sorted_d1=collections.OrderedDict(d1.items(),lambda x:x[1])
但是如果我在值中找到“FAIL”字符串并将它们分组,我该怎么做呢?请帮忙解决这个问题
d1 =
{
'test1':{'condition1':'PASS','condition2':'FAIL','condition3':'-'},
'test2':{'condition1':'PASS','condition2':'PASS','condition3':'-'},
'test3':{'condition1':'-' ,'condition2':'PASS','condition3':'-'},
'test4':{'condition1':'PASS','condition2':'-' ,'condition3':'-'},
'test5':{'condition1':'-' ,'condition2':'FAIL','condition3':'-'},
'test6':{'condition1':'FAIL','condition2':'PASS','condition3':'-'},
'test7':{'condition1':'FAIL','condition2':'-' ,'condition3':'-'}
}
sorted_d1 =
{
'test1':{'condition1':'PASS','condition2':'**FAIL**','condition3':'-'},
'test5':{'condition1':'-' ,'condition2':'**FAIL**','condition3':'-'},
'test6':{'condition1':'**FAIL**','condition2':'PASS','condition3':'-'},
'test7':{'condition1':'**FAIL**','condition2':'-' ,'condition3':'-'},
'test2':{'condition1':'PASS','condition2':'PASS','condition3':'-'},
'test3':{'condition1':'-' ,'condition2':'PASS','condition3':'-'},
'test4':{'condition1':'PASS','condition2':'-' ,'condition3':'-'}
}
答案 0 :(得分:0)
我不是订购dicts的忠实粉丝,所以这里有一个键列表:
result = []
for key, my_dict in d1.items():
if 'FAIL' in my_dict.values():
result.insert(0, key)
else:
result.append(key)
print(result)
包含' FAIL'的密钥先来。除此之外,没有特别的顺序。如果您需要区分“FAIL”而不是“FAIL”'并且保留原始订单(我认为这是由密钥表示的),您可以制作两个列表,一个列有' FAIL'一个没有,只是排序那些。