2016-04-19 37 views
1

に辞書の2つのリストの和集合を取得する方法:私は次のようなデータ構造を持つ2つのリストを持っているのPython

array1: 
[{'student': {'name': 'abc'}, 'address': 'add_abc'}, 
    {'student': {'name': 'xyz'}, 'address': 'add_xyz'}] 

array2: 
[{'student': {'name': 'abc'}, 'address': 'add_abc'}, 
    {'student': {'name': 'rst'}, 'address': 'add_rst'}] 

私は上記の2つのリストの組合とarray3を持ちたい

array3: 
[{'student': {'name': 'abc'}, 'address': 'add_abc'}, 
    {'student': {'name': 'rst'}, 'address': 'add_rst'}, 
    {'student': {'name': 'xyz'}, 'address': 'add_xyz'}] 

Pythonでどうすればいいですか?

答えて

5

彼らは、配列listsではありませんが、ここソリューションです:

a1 = [{'student': {'name': 'abc'}, 'address': 'add_abc'}, 
     {'student': {'name': 'xyz'}, 'address': 'add_xyz'}] 
a2 = [{'student': {'name': 'abc'}, 'address': 'add_abc'}, 
     {'student': {'name': 'rst'}, 'address': 'add_rst'}] 
a3 = a1 + [i for i in a2 if i not in a1] 

あなたの結果のリストをソートしたい場合はa3の値は学生の名前で(

[{'student': {'name': 'abc'}, 'address': 'add_abc'}, 
{'student': {'name': 'xyz'}, 'address': 'add_xyz'}, 
{'student': {'name': 'rst'}, 'address': 'add_rst'}] 

になります例えば、sortメソッドを使用してください:

a3.sort(key=lambda x: x["student"]["name"]) 

そして得られたa3は次のようになります。

[{'student': {'name': 'abc'}, 'address': 'add_abc'}, 
{'student': {'name': 'rst'}, 'address': 'add_rst'}, 
{'student': {'name': 'xyz'}, 'address': 'add_xyz'}] 

通常は、単にset(a1 + a2)を使用しますが、ここでの問題は、それゆえ、彼らは項目を設定することはできません、あなたはlistの内部dict秒を持っており、彼らは非ハッシュであるということです。

関連する問題