Sto cercando record duplicati nei file dbf in base all'attributo chiamato 'ID'. Ho vari file dbf da 500.000 a 1,5 milioni e so che ci sono molti duplicati.
Vorrei aggiungere un campo 'Duplica' che dice Sì o No (o 1 o 0 va bene) quando l'attributo ID è presente altrove. L'uso del seguente script python in Field Calculator restituisce 1 per una voce duplicata e 0 per una voce univoca;
uniqueList = []
def isDuplicate(inValue):
if inValue in uniqueList:
return 1
else:
uniqueList.append(inValue)
return 0
isDuplicate(!FIELD_NAME!)
Tuttavia, il primo record di, ad esempio, 5 ID duplicati verrà anche restituito come 0 (i 4 successivi sono considerati duplicati). Avrei bisogno che tutti e 5 fossero contrassegnati come duplicati poiché l'ID esiste altrove.
L'uso del seguente codice ti darà un conteggio incrementale di quante volte quell'ID si verifica con 1 che significa la prima occasione e così via;
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return UniqueDict[inValue]
isDuplicateIndex( !YOUR_FIELD! )
Voglio solo un 1 (o Sì) se l'ID di quel record esiste altrove! (ArcGIS versione 10.1)
Ho visto altre risposte come lo script Python per l'identificazione di record duplicati (follow-up) ma non funziona del tutto.