Beaucoup de bons exemples de recherche de valeurs et de clés dupliquées, ci-dessous la façon dont nous filtrons les données dupliquées du dictionnaire entier dans les listes. Utilisez dupKeys = [] si vos données sources sont composées de dictionnaires au format EXACT et que vous recherchez des doublons. Sinon, définissez dupKeys = sur les noms des clés des données dont vous voulez éviter les doublons, de 1 à n clés. Ce n'est pas élégant, mais cela fonctionne et c'est très flexible.
import binascii
collected_sensor_data = [{"sensor_id":"nw-180","data":"XXXXXXX"},
{"sensor_id":"nw-163","data":"ZYZYZYY"},
{"sensor_id":"nw-180","data":"XXXXXXX"},
{"sensor_id":"nw-97", "data":"QQQQQZZ"}]
dupKeys = ["sensor_id", "data"]
def RemoveDuplicateDictData(collected_sensor_data, dupKeys):
checkCRCs = []
final_sensor_data = []
if dupKeys == []:
for sensor_read in collected_sensor_data:
ck1 = binascii.crc32(str(sensor_read).encode('utf8'))
if not ck1 in checkCRCs:
final_sensor_data.append(sensor_read)
checkCRCs.append(ck1)
else:
for sensor_read in collected_sensor_data:
tmp = ""
for k in dupKeys:
tmp += str(sensor_read[k])
ck1 = binascii.crc32(tmp.encode('utf8'))
if not ck1 in checkCRCs:
final_sensor_data.append(sensor_read)
checkCRCs.append(ck1)
return final_sensor_data
final_sensor_data = [{"sensor_id":"nw-180","data":"XXXXXXX"},
{"sensor_id":"nw-163","data":"ZYZYZYY"},
{"sensor_id":"nw-97", "data":"QQQQQZZ"}]
0 votes
Pouvez-vous nous en dire plus sur le problème réel que vous essayez de résoudre ? Cela semble être un problème étrange à avoir.
2 votes
Je combine quelques listes de dicts et il y a des doublons. J'ai donc besoin de supprimer ces doublons.
0 votes
J'ai trouvé une solution dans stackoverflow.com/questions/480214/ dans une réponse sans l'utilisation de
set()