Python stores key/values in dictionaries.
In this example values (which are dictionaries themselves) are stored in "lut".
lut = {}
pair="  "
line = "halhak"
for letter in line.strip() + ' ':
                d = lut.setdefault(pair, {})
                d[letter] = d.get(letter, 0) + 1
                pair = pair[1] + letter
The key / values are:
for key in lut:
    print key, "/", lut[key]
   / {'h': 1}
ak / {' ': 1}
al / {'h': 1}
lh / {'a': 1}
ha / {'k': 1, 'l': 1}
 h / {'a': 1}
My question: I don't see where the loop assigns any values to "lut" different from "{}".
 
     
     
    