请教一个lst的问题
lst = [
['module_name_1', 0, 11, 'res_name_1', 'Deactive'],
['module_name_1', 0, 13, 'res_name_2', 'Deactive'],
['module_name_1', 0, 13, 'res_name_3', 'Deactive'],
['module_name_1', 0, 13, 'res_name_4', 'Deactive'],
['module_name_1', 0, 13, 'res_name_5', 'Deactive'],
['module_name_1', 0, 13, 'res_name_1', 'Deactive'],
['module_name_2', 0, 11, 'res_name_2', 'Deactive'],
['module_name_2', 0, 13, 'res_name_3', 'Deactive'],
['module_name_2', 0, 13, 'res_name_4', 'Deactive'],
['module_name_2', 0, 13, 'res_name_2', 'Deactive'],
['module_name_2', 0, 13, 'res_name_5', 'Deactive']
]
在同一个'module_name_1'下,比较'res_name_1',如果'res_name_1'在不同的(11,13)下同时存在,返回这两行
即上面的返回
result = [
['module_name_1', 0, 11, 'res_name_1', 'Deactive'],
['module_name_1', 0, 13, 'res_name_1', 'Deactive'],
['module_name_2', 0, 11, 'res_name_2', 'Deactive'],
['module_name_2', 0, 13, 'res_name_2', 'Deactive']
]
[解决办法]
- Python code
lst = [ ['module_name_1', 0, 11, 'res_name_1', 'Deactive'], ['module_name_1', 0, 13, 'res_name_2', 'Deactive'], ['module_name_1', 0, 13, 'res_name_3', 'Deactive'], ['module_name_1', 0, 13, 'res_name_4', 'Deactive'], ['module_name_1', 0, 13, 'res_name_5', 'Deactive'], ['module_name_1', 0, 13, 'res_name_1', 'Deactive'], ['module_name_2', 0, 11, 'res_name_2', 'Deactive'], ['module_name_2', 0, 13, 'res_name_3', 'Deactive'], ['module_name_2', 0, 13, 'res_name_4', 'Deactive'], ['module_name_2', 0, 13, 'res_name_2', 'Deactive'], ['module_name_2', 0, 13, 'res_name_5', 'Deactive'] ]def func(_lst): result = [] dict = {} for row,each in enumerate(_lst): try: dict[(each[0], each[3])][each[2]] = row except KeyError: dict[(each[0], each[3])] = {each[2]:row} for key in dict: if dict[key].keys() == [11,13]: for i in dict[key].values(): result += [_lst[i]] return resultfor each in func(lst): print each