Wolfram Function Repository
Instantuse addon functions for the Wolfram Language
Function Repository Resource:
A twoargument form of Counts that gives an association between a set of provided keys and the number of times those keys appear in a list
ResourceFunction["ItemCounts"][list,keys] gives an Association that pairs each element of keys with the number of times it appears in list. 

ResourceFunction["ItemCounts"][list,keys,default] outputs default for any key not appearing in list. 

ResourceFunction["ItemCounts"][list,assoc] outputs the associated value of a given key in assoc if that key is not an element of list. 

ResourceFunction["ItemCounts"][assoc] is an operator form of ItemCounts that produces ResourceFunction["ItemCounts"][list,assoc,0] when it is given a list. 
Because neither a "b" nor "e" is present in the first argument, the output association has values of 0 for those keys; otherwise, the values are just as they would be with Counts:
In[1]:= 

Out[1]= 

Keys not found are assumed to take on the default value of 42:
In[2]:= 

Out[2]= 

The association in the second argument results in missing keys being set to 0, except for key "b", which is set to 42:
In[3]:= 

Out[3]= 

An operator form of CountsList:
In[4]:= 

Out[4]= 

Keys in the output have the same order as keys in the second argument of the input:
In[5]:= 

Out[5]= 

Users can specify their own defaults for a list of values:
In[6]:= 

Out[6]= 

If one uses a list default, it must be the same length as the list of the keys; otherwise, an error message is generated:
In[7]:= 

Out[7]= 

A very common use of this function is producing an association with the same length and same keys when using counting items in a structure of lists:
In[8]:= 

Out[8]= 

Another way of going about this is to join a default Association with the Counts, but this method is less flexible:
In[9]:= 

Out[9]= 

One might also do it with a Merge and use the First argument for merging, but this method is similarly less flexible:
In[10]:= 

Out[10]= 

Duplicate keys in the second argument are eliminated:
In[11]:= 

Out[11]= 

An empty list in the second argument or an empty Association produces an empty Association:
In[12]:= 

Out[12]= 

The second argument must be a List or Association:
In[13]:= 

Out[13]= 

In[14]:= 

Out[14]= 

Group the passengers on the Titanic over age 70 by age and count their genders:
In[15]:= 

Out[15]= 

Find the distribution of UFO shapes by states, but limit oneself to the five most frequently seen shapes:
In[16]:= 

Out[16]= 

This work is licensed under a Creative Commons Attribution 4.0 International License