Я шукаю дублікати записів у dbf-файлах на основі атрибута під назвою 'ID'. У мене є різні dbf файли від 500 000 записів до 1,5 мільйона, і я знаю, що існує безліч дублікатів.
Я хотів би додати поле "Дублікат", яке говорить Так чи Ні (або 1 або 0 добре), коли атрибут ID присутній в іншому місці. Використовуючи наступний скрипт 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 означає перший випадок тощо;
UniqueDict = {}
def isDuplicateIndex(inValue):
UniqueDict.setdefault(inValue,0)
UniqueDict[inValue] += 1
return UniqueDict[inValue]
isDuplicateIndex( !YOUR_FIELD! )
Я просто хочу 1 (або Так), якщо ідентифікатор цього запису існує в іншому місці! (Версія ArcGIS 10.1)
Я бачив інші відповіді, такі як сценарій Python для виявлення дублікатів записів (подальша робота), але це не зовсім працює.