मैं 'ID' नामक विशेषता के आधार पर dbf फ़ाइलों में डुप्लिकेट रिकॉर्ड की तलाश कर रहा हूं। मेरे पास 500,000 से लेकर 1.5 मिलियन तक की विभिन्न dbf फाइलें हैं और मुझे पता है कि डुप्लिकेट के एक मेजबान हैं।
मैं एक फ़ील्ड 'डुप्लिकेट' जोड़ना चाहूंगा जो कहता है कि हां या नहीं (या 1 या 0 ठीक है) जब आईडी विशेषता कहीं और मौजूद हो। फ़ील्ड कैलकुलेटर में निम्नलिखित पायथन लिपि का उपयोग करके डुप्लिकेट प्रविष्टि के लिए 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)
मैंने डुप्लिकेट रिकॉर्ड (फॉलो अप) की पहचान के लिए पायथन स्क्रिप्ट जैसे अन्य उत्तर देखे हैं, लेकिन यह काफी काम नहीं करता है।