2016-11-10 9 views
1

ネストされた辞書の値に基づいてタプルを以下のように分離し、別のリストに入れる必要があります。私はそれが結果を生み出すことができネストされたリストから別のリストにタプルを分割する

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 

、私は以下の再帰的なコードを使用

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

、以下のように二つのリストを必要とする値「BB」とのタプルを分離すること

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

をしたいですリストを削除した後削除された値で別のリストを取得する方法はありますか?

答えて

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')]] 
>>> 
関連する問題