Here's a sample script using ideas in my previous posts:
import arcpy
gdb = r"C:\Path\To\file.gdb"
arcpy.env.workspace = gdb
domDict = {}
domains = arcpy.da.ListDomains(gdb)
for domain in domains:
if domain.domainType == 'CodedValue':
if domain.name not in domDict:
vList = []
coded_values = domain.codedValues
for val, desc in coded_values.items():
vList.append({val:desc})
domDict[domain.name] = vList
fc = 'MyFeature'
fields = arcpy.ListFields(fc)
fldDict = {}
for field in fields:
if len(field.domain):
fldDict[field.name] = field.domain
domCount = {}
fldList = list(fldDict.keys())
with arcpy.da.SearchCursor(fc, fldList) as rows:
for row in rows:
for i, f in enumerate(fldList):
if fldList[i] not in domCount:
domCount[fldList[i]] = {}
if row[i] not in domCount[fldList[i]]:
domCount[fldList[i]][row[i]] = 1
else:
domCount[fldList[i]][row[i]] += 1
del rows
for k, v in domCount.iteritems():
print "Field: {}".format(k)
print " Domain: {}".format(fldDict[k])
for dLst in domDict[fldDict[k]]:
for k1, v1 in dLst.iteritems():
if k1 in v:
print " Key: {} - Description: {} - Count: {}".format(k1, v1, v[k1])
else:
print " Key: {} - Description: {} - Count: {}".format(k1, v1, 0)
And my test results:
Field: MyType
Domain: MyCode
Key: 1234 - Description: One - Count: 3
Key: 2345 - Description: Two - Count: 2
Key: 3456 - Description: Three - Count: 0
Key: 6789 - Description: Six - Count: 0
Key: 4567 - Description: Four - Count: 0
Key: 5678 - Description: Five - Count: 0
Key: 7890 - Description: Seven - Count: 1
Field: MyColor
Domain: MyColor
Key: Y - Description: Yellow - Count: 1
Key: P - Description: Purple - Count: 0
Key: B - Description: Blue - Count: 1
Key: R - Description: Red - Count: 2
Key: G - Description: Green - Count: 2