簡體   English   中英

根據特定值對字典進行排序

[英]sorting dict of dicts based on particular values

我確實有一個字典; 這需要以 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':'-'}
}

我不是訂購 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' 的鍵首先出現。 除此之外,沒有特別的順序。 如果您需要區分“失敗”和“失敗”並保持原始順序(我假設這是由鍵表示的),您可以制作兩個列表,一個帶有“失敗”,一個沒有,只需對它們進行排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM