Find occurences from a list of strings

A simple way to do this with built-in python functions:

keys = set(word_list)

values = [word_list.count(key) for key in keys]

for k, v in zip(keys, values):
    print('item', k, 'has count', v)

Output:

item EASY has count 1
item IS has count 10
item DENSE has count 1
item EXPLICITLY has count 1
item FIRST has count 1
item THE has count 6
item DUTCH has count 1
item ONE has count 3
item BEAUTIFUL has count 1
item TO has count 5
item LETS has count 1
item BREAK has count 1
item READABILITY has count 1
item THAT has count 1
item GREAT has count 1
item IF has count 2
item NOW has count 2
item GOOD has count 1
item ALTHOUGH has count 3
item WAY has count 2
item MORE has count 1
item NESTED has count 1
item SPARSE has count 1
item AND has count 1
item ERRORS has count 1
item ZEN has count 1
item BY has count 1
item SILENCED has count 1
item ITS has count 1
item BETTER has count 8
item OBVIOUS has count 2
item ONLY has count 1
item THOSE has count 1
item ARENT has count 1
item REFUSE has count 1
item EXPLICIT has count 1
item BAD has count 1
item COMPLEX has count 2
item SILENTLY has count 1
item BE has count 3
item COMPLICATED has count 1
item PETERS has count 1
item SHOULD has count 2
item PREFERABLY has count 1
item UNLESS has count 2
item RULES has count 1
item NAMESPACES has count 1
item THERE has count 1
item OF has count 3
item EXPLAIN has count 2
item IMPLEMENTATION has count 2
item HARD has count 1
item IN has count 1
item COUNTS has count 1
item NOT has count 1
item A has count 2
item YOURE has count 1
item PURITY has count 1
item NEVER has count 3
item IMPLICIT has count 1
item DO has count 2
item ARE has count 1
item BEATS has count 1
item HONKING has count 1
item AMBIGUITY has count 1
item PRACTICALITY has count 1
item RIGHT has count 1
item ENOUGH has count 1
item MAY has count 2
item UGLY has count 1
item SIMPLE has count 1
item TIM has count 1
item IT has count 2
item CASES has count 1
item FLAT has count 1
item FACE has count 1
item THAN has count 8
item AT has count 1
item TEMPTATION has count 1
item PYTHON has count 1
item SPECIAL has count 2
item PASS has count 1
item IDEA has count 3
item OFTEN has count 1
item GUESS has count 1

It seems to find a way to count the number of unique values in the list. Despite you can use a combination of set() (which holds the unique values) and len() functions as it is explained in this answer, but you can use:

#print(len(set(word_list)))
#86

counts_unique_values = dict(zip(list(word_list),[list(word_list).count(i) for i in list(word_list)])) 
print(counts_unique_values)

output:

{'THE': 6, 'ZEN': 1, 'OF': 3, 'PYTHON': 1, 'BY': 1, 'TIM': 1, 'PETERS': 1, 'BEAUTIFUL': 1, 'IS': 10, 'BETTER': 8, 'THAN': 8, 'UGLY': 1, 'EXPLICIT': 1, 'IMPLICIT': 1, 'SIMPLE': 1, 'COMPLEX': 2, 'COMPLICATED': 1, 'FLAT': 1, 'NESTED': 1, 'SPARSE': 1, 'DENSE': 1, 'READABILITY': 1, 'COUNTS': 1, 'SPECIAL': 2, 'CASES': 1, 'ARENT': 1, 'ENOUGH': 1, 'TO': 5, 'BREAK': 1, 'RULES': 1, 'ALTHOUGH': 3, 'PRACTICALITY': 1, 'BEATS': 1, 'PURITY': 1, 'ERRORS': 1, 'SHOULD': 2, 'NEVER': 3, 'PASS': 1, 'SILENTLY': 1, 'UNLESS': 2, 'EXPLICITLY': 1, 'SILENCED': 1, 'IN': 1, 'FACE': 1, 'AMBIGUITY': 1, 'REFUSE': 1, 'TEMPTATION': 1, 'GUESS': 1, 'THERE': 1, 'BE': 3, 'ONE': 3, 'AND': 1, 'PREFERABLY': 1, 'ONLY': 1, 'OBVIOUS': 2, 'WAY': 2, 'DO': 2, 'IT': 2, 'THAT': 1, 'MAY': 2, 'NOT': 1, 'AT': 1, 'FIRST': 1, 'YOURE': 1, 'DUTCH': 1, 'NOW': 2, 'OFTEN': 1, 'RIGHT': 1, 'IF': 2, 'IMPLEMENTATION': 2, 'HARD': 1, 'EXPLAIN': 2, 'ITS': 1, 'A': 2, 'BAD': 1, 'IDEA': 3, 'EASY': 1, 'GOOD': 1, 'NAMESPACES': 1, 'ARE': 1, 'HONKING': 1, 'GREAT': 1, '': 1, 'LETS': 1, 'MORE': 1, 'THOSE': 1}

Option2: you can convert the list into pandas dataframe by calling directly pd.DataFrame() and use value_counts() to count distinct values in single column:

import pandas as pd
#df = pd.DataFrame(word_list)
df = pd.DataFrame({'Text': word_list})
df.value_counts()

output:

Text    
IS          10
BETTER       8
THAN         8
THE          6
TO           5
            ..
ITS          1
YOURE        1
IN           1
IMPLICIT     1
             1
Length: 86, dtype: int64

to cover:

...and counts their occurrence only if the word has more than 3 characters Then prints them in order

you might use something like below:

for word in word_list:
    if len(word) > 3:
        #print()