【发布时间】:2020-08-24 12:39:59
【问题描述】:
当搜索匹配多个dict值时,只需要打印最高优先级的KEY。
ERROR_CATEGORIES_TO_SEARCH_1 = {
"VEHICAL_1" : ['CAR'],
"VEHICAL_2": ['BIKE'],
"VEHICAL_3" : ["TRUCK"],
"VEHICAL_4" : ['AEROPLANE'],
"VEHICAL_5" : ['SHIP'],
"VEHICAL_6" : ['BOAT'],
"VEHICAL_7" : ['CART'],
"VEHICAL_8" : ['CYCLE']
}
prio_list = ['VEHICAL_1', 'VEHICAL_2' , 'VEHICAL_3' , 'VEHICAL_4', 'VEHICAL_5', 'VEHICAL_6','VEHICAL_7', 'VEHICAL_8']
res = ERROR_CATEGORIES_TO_SEARCH_1.get(prio_list[0], ERROR_CATEGORIES_TO_SEARCH_1.get(prio_list[1],
ERROR_CATEGORIES_TO_SEARCH_1.get(prio_list[2], ERROR_CATEGORIES_TO_SEARCH_1.get(prio_list[3], ERROR_CATEGORIES_TO_SEARCH_1.get(prio_list[4], ERROR_CATEGORIES_TO_SEARCH_1.get(prio_list[5] , ERROR_CATEGORIES_TO_SEARCH_1.get(prio_list[6], ERROR_CATEGORIES_TO_SEARCH_1.get(prio_list[7]))))))))
MESSAGE_A = "I bought a new CAR and a BIKE"
MESSAGE_B = "WOW That SHIP is so huge and beautiful"
MESSAGE_C = "only mode to travel through hill station is by TRUCK"
MESSAGE_D = "First will ride on a CYCLE and then by BOAT"
resultant_key = [key for (key, lst) in ERROR_CATEGORIES_TO_SEARCH_1.items() for ele in lst if ele in MESSAGE_A]
//OUTPUT:: VEHICAL_1, VEHICAL_2
resultant_key = [key for (key, lst) in ERROR_CATEGORIES_TO_SEARCH_1.items() for ele in lst if ele in MESSAGE_B]
//OUTPUT:: VEHICAL_5
resultant_key = [key for (key, lst) in ERROR_CATEGORIES_TO_SEARCH_1.items() for ele in lst if ele in MESSAGE_c]
//OUTPUT:: VEHICAL_3
resultant_key = [key for (key, lst) in ERROR_CATEGORIES_TO_SEARCH_1.items() for ele in lst if ele in MESSAGE_D]
//OUTPUT :: VEHICAL_6, VEHICAL_8
由于我只需要打印要打印的优先键,以下是预期输出:
resultant_key = [key for (key, lst) in ERROR_CATEGORIES_TO_SEARCH_1.items() for ele in lst if ele in MESSAGE_A]
//OUTPUT:: VEHICAL_1
resultant_key = [key for (key, lst) in ERROR_CATEGORIES_TO_SEARCH_1.items() for ele in lst if ele in MESSAGE_D]
//OUTPUT :: VEHICAL_6
对此的任何建议都会有所帮助
【问题讨论】:
标签: python