特定のインデックスで共通の値を共有している場合、あるサブリストを別のサブリストで拡張する最も効率的な方法は何ですか? List1 のインデックス 0 の値が List2 のインデックス 0 の値と等しい場合、2 つのサブリストをマージしたいと思います。
List1 = [['aaa','b','c'],['ddd','e','f']]
List2 = [['aaa','1','2'],['ddd','3','4']]
望ましい出力:
[['aaa','b','c','aaa','1','2'],['ddd','e','f','ddd','3','4']]
私のハック:
from collections import defaultdict
Keys2 = map(lambda x: x[0], List2) #returns ['aaa','ddd']
List2_of_Tuples = zip(Keys,List2) #returns [('aaa',['aaa','1','2']),('ddd',['ddd','3','4'])]
Keys1 = map(lambda x: x[0], List1)
List1_of_Tuples = zip(Keys,List1)
Merged_List_of_Tuples = List1_of_Tuples + List2_of_Tuples
d = defaultdict(list)
for k,v in Merged_List_of_Tuples:
d[k].append(v)
Desired_Result = map(lambda x: [item for sublist in x[1] for item in sublist],d.items())
これは以下を返します:
[['aaa', 'b', 'c', 'aaa', '1', '2'], ['ddd', 'e', 'f', 'ddd', '3', '4']]
これを 2 つ以上の大きなリストに対して行っています。これを行うためのより短いより効率的な方法はありますか?