If you have a vector shapefile layer that has an attribute which is a categorized group for other attributes and you want to get the count/number of items in each group, then here is a quick script to get you the result.
A typical scenario where you will find this useful is when you count counties in a state or similar scenario. Assuming we have a vector layer with a category attribute column named "group" as seen below, then we can count the occurrences of each group using the following script.
from collections import Counter # Get active vector layer... layer = iface.activeLayer() # Lets count the number of features... print(layer.featureCount()) # Lets check the field names... for f in layer.fields(): print(f.name()) # Get attributes into a list... attr_list = [] for feature in layer.getFeatures(): attr_list.append(feature['group']) # Count item occurrences using 'collections.Counter' attr_count = dict( Counter(attr_list) ) print(attr_count)
The primary logic here is in counting item occurrences within a list using collections.Counter module as seen below.
That is it!