"""Python dictionaries
http://openbookproject.net/thinkcs/python/english2e/ch12.html
"""


# a dictionary is a collection of key-value pairs that allows access
# to the value by key

# create an empty dictionary
eng2sp = {}
eng2sp['one'] = 'uno'
eng2sp['two'] = 'dos'

# why is this useful?  how would you implement something like this using
# a list?

print eng2sp

# you can create a dictionary by providing key-value pairs in the same
# format as the output of the above output:

eng2sp = {'one': 'uno', 'two': 'dos', 'three': 'tres'}

# order doesn't matter!

inventory = {'apples': 430, 'bananas': 312, 'oranges': 525, 'pears': 217}
print inventory

# the len function returns the number of key-value pairs
print len(inventory)

# We can change the values in a dictionary:

inventory['pears'] = 0

# and delete key-value pairs:

del inventory['pears']

# you can determine if a dictionary has an entry with a given key:

print 'pears' in inventory
print 'bananas' in inventory

# you can use integers, strings and tuples as keys:

pair_dictionary = {}
pair_dictionary[('a', 1)] = 1
pair_dictionary[('z', 3)] = 5

# note that all keys of a dictionary are immutable

# you can iterate over a dictionary using a for loop:

for key in inventory :
    print inventory[key]

# examples where this is useful:

def count_letters(s) :
    counts = {}
    for char in s :
        if not(char in counts) :
            counts[char] = 0
        counts[char] += 1
    return counts