2015-11-16 69 views
-1

我有兩個具有特定數據的列表,我想將它們合併到一個單獨的列表中,但是沒有重複項。如何從python列表中刪除json字符串

list1 =[{"id": "123","Name": "Sam", "Age": 10},{"id": "124","Name": "Ajay", "Age": 10}] 

list2 =[{"id": "123","Name": "Sam"},{"id": "124","Name": "Ajay"},{"id": "125","Name": "Ram"}] 

輸出列表應該是這樣的

output= [{"id": "123","Name": "Sam", "Age": 10},{"id": "124","Name": "Ajay", "Age": 10},{"id": "125","Name": "Ram"}] 
+1

你有沒有對這個自己所做的任何工作?如果是這樣,你卡在哪裏?你基本上有字典的Python列表,這不是JSON特有的。 –

+0

@MartijnPieters我嘗試使用list2.remove(list1),但它不能正常工作 –

回答

1

想必這是id鍵唯一標識信息。如果是這樣,收集所有來自兩個列表的信息在字典中,然後從產生一個新的列表:

from itertools import chain 

per_id = {} 
for info in chain(list1, list2): 
    per_id.setdefault(info['id'], {}).update(info) 

output = list(per_id.values()) # Python 2 and 3 compatible 

演示:

>>> from itertools import chain 
>>> list1 = [{'Age': 10, 'id': '123', 'Name': 'Sam'}, {'Age': 10, 'id': '124', 'Name': 'Ajay'}] 
>>> list2 = [{'id': '123', 'Name': 'Sam'}, {'id': '124', 'Name': 'Ajay'}, {'id': '125', 'Name': 'Ram'}] 
>>> per_id = {} 
>>> for info in chain(list1, list2): 
...  per_id.setdefault(info['id'], {}).update(info) 
... 
>>> list(per_id.values()) 
[{'Age': 10, 'id': '123', 'Name': 'Sam'}, {'Age': 10, 'id': '124', 'Name': 'Ajay'}, {'id': '125', 'Name': 'Ram'}] 
相關問題