Представьте, что у меня есть список таких словарей:
[{'artifactID': 8047.0,
'memberID': 1,
'resource_launch': {'key1':'value1','key2':'value2','key3':'value3'},
{'artifactID': 8301.0,
'memberID': 1,
'resource_launch': {'key1':'value1','key2':'value2','key3':'value3'},
{'artifactID': 8374.0,
'memberID': 1,
'resource_launch': {'key1':'value1','key2':'value2','key3':'value3'},
{'artifactID': 8641.0,
'memberID': 1,
'resource_launch': {'key1':'value1','key2':'value2','key3':'value3'},
{'artifactID': 8969.0,
'memberID': 1,
'resource_launch': {'key1':'value1','key2':'value2','key3':'value3'}
]
В этом списке более миллиона словарей. Я хотел бы найти комбинации memberID
и artifactID
, и, если комбинация существует, добавьте некоторые значения к существующим ключам в словаре resource_launch
.
Например: если я ищу комбинацию artifactID=8969
и memberID=1
, я бы хотел, чтобы эта запись обновлялась в списке словарей следующим образом:
[{'artifactID': 8047.0,
'memberID': 1,
'resource_launch': {'key1':'value1','key2':'value2','key3':'value3'},
{'artifactID': 8301.0,
'memberID': 1,
'resource_launch': {'key1':'value1','key2':'value2','key3':'value3'},
{'artifactID': 8374.0,
'memberID': 1,
'resource_launch': {'key1':'value1','key2':'value2','key3':'value3'},
{'artifactID': 8641.0,
'memberID': 1,
'resource_launch': {'key1':'value1','key2':'value2','key3':'value3'},
{'artifactID': 8969.0,
'memberID': 1,
'resource_launch': {'key1':['value1','value4'],'key2':['value2','value5'],'key3':['value3','value6']}
]
Если комбинация не существует, я бы хотел добавить ее в список словарей. .
Как мне быстро достичь этого, учитывая, что этот список будет содержать более миллиона словариков? Прямо сейчас я просто добавляю каждую запись, не проверяя, существует ли запись, и это занимает очень много времени.
Любая помощь будет очень признательна.
Вот мой стартер код, который занимает слишком много времени и не достигает того, что я хочу:
finalJSON = []
for memberID in tqdm(artifactsTimespent['memberID'].unique()):
temp_artifactsTimespent = artifactsTimespent[artifactsTimespent.memberID==memberID]
for artifactID in temp_artifactsTimespent['artifactID'].unique():
temp_artifactsTimespent = temp_artifactsTimespent[temp_artifactsTimespent.artifactID==artifactID]
temp_resourceLaunchData = resourceLaunchData[resourceLaunchData.member_id==memberID]
temp_resourceLaunchData = temp_resourceLaunchData[temp_resourceLaunchData.artifact_id==artifactID]
temp_artifactsContentData = artifactsContentData[artifactsContentData.member_id==memberID]
temp_artifactsContentData = temp_artifactsContentData[temp_artifactsContentData.artifact_id==artifactID]
temp_artifactRevisions = artifactRevisions[artifactRevisions.artifactid==artifactID]
memberArtifactData = {}
memberArtifactData['memberID'] = memberID
memberArtifactData['artifactID'] = artifactID
memberArtifactData['resource_launch'] = temp_artifactsContentData['content_data']
finalJSON.append(memberArtifactData)