读书人

请问一个lst的有关问题

发布时间: 2012-02-12 17:16:34 作者: rapoo

请教一个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 

读书人网 >perl python

热点推荐