将嵌套列表中的元组分隔为单独的列表

时间:2016-11-10 09:14:05

标签: python list tuples

我需要根据嵌套字典中的值分隔元组,如下所示,并将其放在另一个列表中。我想用元素'bb'

分隔元组
original_list= [[('aa','1'),('bb','2')],[('cc','3'),('bb','4')],[('dd','5'),('dd','6')]]

我需要两个列表,如下所示,

 final_list= [[('aa','1')],[('cc','3')],[('dd','5'),('dd','6')]]
 deleted_list = [[('bb','2')],[('bb','4')]]

我使用了以下递归代码,

def remove_items(lst, item):
    r = []
    for i in lst:
        if isinstance(i, list):
            r.append(remove_items(i, item))
        elif item not in i:
            r.append(i)
    return r

删除值后可以生成结果列表。有没有办法获得删除值的另一个列表?

1 个答案:

答案 0 :(得分:1)

>>> def remove_items(lst, item):
...     r = []
...     d = []
...     for i in lst:
...         if isinstance(i, list):
...             r_tmp,d_tmp = remove_items(i, item)
...             if r_tmp:
...                 r.append(r_tmp)
...             if d_tmp:
...                 d.append(d_tmp)
...         else:
...                 if item not in i:
...                     r.append(i)
...                 else:
...                     d.append(i)
...     return r,d
... 
>>> original_list= [[('aa','1'),('bb','2')],[('cc','3'),('bb','4')],[('dd','5'),('dd','6')]]
>>> result = remove_items(original_list,'bb')
>>> result[0]
[[('aa', '1')], [('cc', '3')], [('dd', '5'), ('dd', '6')]]
>>> result[1]
[[('bb', '2')], [('bb', '4')]]
>>>