首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

请问一个lst的有关问题

2012-02-12 
请教一个lst的问题lst [[module_name_1, 0, 11, res_name_1, Deactive],[module_name_1, 0, 13,

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

热点排行