Я ищу дубликаты записей в файлах DBF на основе атрибута с именем «ID». У меня есть различные файлы DBF от 500 000 записей до 1,5 миллиона, и я знаю, что есть множество дубликатов.
Я хотел бы добавить поле «Дублировать», которое говорит «Да» или «Нет» (или 1 или 0 в порядке), когда атрибут идентификатора присутствует в другом месте. При использовании следующего скрипта Python в Field Calculator возвращается 1 для дублированной записи и 0 для уникальной записи;
uniqueList = []
def isDuplicate(inValue):
if inValue in uniqueList:
return 1
else:
uniqueList.append(inValue)
return 0
isDuplicate(!FIELD_NAME!)
Однако 1-я запись, например, 5 дубликатов идентификаторов также будет возвращена как 0 (последующие 4 считаются дубликатами). Мне нужно, чтобы все 5 были отмечены как дубликаты, поскольку идентификатор существует в другом месте.
Использование следующего кода даст вам дополнительный подсчет того, сколько раз этот идентификатор встречается, причем 1 означает 1-й случай и т. Д .;
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return UniqueDict[inValue]
isDuplicateIndex( !YOUR_FIELD! )
Я просто хочу 1 (или Да), если идентификатор этой записи существует в другом месте! (ArcGIS версия 10.1)
Я видел другие ответы, такие как сценарий Python для определения дубликатов записей (продолжение), но это не совсем работает.