我有一個字典列表,其中一個字典值name
包含我想規範化的重複數據。清單看起來像這樣:使用ID陣列將重複字典項目轉換爲唯一項目
[
{'name': 'Craig McKray', 'document_id': 50, 'annotation_id': 8},
{'name': 'None on file', 'document_id': 40, 'annotation_id': 5},
{'name': 'Craig McKray', 'document_id': 50, 'annotation_id': 9},
{'name': 'Western Union', 'document_id': 61, 'annotation_id': 11}
]
我想要做的是創建一個新的字典,其中只包含唯一的名稱。但我需要跟蹤document_ids和annotation_ids。有時document_ids是相同的,但我只需要跟蹤它們與名稱關聯。所以上面的列表會變成:
[
{'name': 'Craig McKray', 'document_ids': [50], 'annotation_ids': [8, 9]},
{'name': 'None on file', 'document_ids': [40], 'annotation_id': [5]},
{'name': 'Western Union', 'document_ids': [61], 'annotation_ids': [11]}
]
這是到目前爲止,我已經試過代碼:
result = []
# resolve duplicate names
result_row = defaultdict(list)
for item in data:
for double in data:
if item['name'] == double['name']:
result_row['name'] = item['name']
result_row['record_ids'].append(item['document_id'])
result_row['annotation_ids'].append(item['annotation_id'])
result.append(result_row)
與代碼的主要問題是,我比較和查找重複的,但是當我迭代到下一個項目時,它會再次找到重複項,從而創建一個無限循環。我如何編輯代碼,以便它不會一直比較重複的代碼?
請發表你得到的輸出。 – perigon