# Dictionaries

A dictionary is an object that stores a collection of data. Each element has two parts - a key and an index. You use the key to locate a specific value. We call this key-value pairs.

## Syntax and Methods

We create a dictionary by enclosing the elements inside of a set of curly braces { }.

We retrieve a value from a dictionary:

dictionary_name[key]

### And not in Operators

We use the in and not in operators to test for a value in a dictionary.

### Adding Elements to a Dictionary

dictionary_name[key] = value

### Deleting Elements in a Dictionary

del dictionary_name[key]

### len Function

You can use the function len to get the number of elements in a dictionary.

### Creating an Empty Dictionary

You might want to create an empty dictionary where you then add elements to it as the program executes.

### Using the for Loop

for var in dictionary:
statement
statement
etc.

### Dictionary Methods

Method | Explanation
--- | ---
clear() | clears the contents of the dictionary
get() | gets the value associated with a specified key
items() | returns all the keys in a dictionary and their associated values as a sequence of tuples
keys() | returns all the keys in a dictionary as a sequence of tuples
pop() | returns the value associated with a specified key and removes that key-value pair from the dictionary
popitem() | returns a randomly selected key-value pair as a tuple from the dictionary and removes that key-value pair from the dictionary
values() | returns all the values in the dictionary as a sequence of tuples

## Exercises

Note the >>> prompt in the examples below indicates that they are running in the PYTHON shell using the "interactive" mode.

dict types can be thought of a list of key:value pairs.

>>> marks = {'Rahul' : 86, 'Ravi' : 92, 'Rohit' : 75}
>>> marks
{'Rahul': 86, 'Ravi': 92, 'Rohit': 75}
>>> fav_books = {}
>>> fav_books['fantasy'] = 'Harry Potter'
>>> fav_books['detective'] = 'Sherlock Holmes'
>>> fav_books['thriller'] = 'The Da Vinci Code'
>>> fav_books
{'fantasy': 'Harry Potter', 'detective': 'Sherlock Holmes', 'thriller': 'The Da Vinci Code'}
>>> marks.keys()
dict_keys(['Rahul', 'Ravi', 'Rohit'])
>>> fav_books.values()
dict_values(['Harry Potter', 'Sherlock Holmes', 'The Da Vinci Code'])

Looping and printing.

>>> for book in fav_books.values():
print(book)
Harry Potter
Sherlock Holmes
The Da Vinci Code
>>> for name, mark in marks.items():
print(name, mark, sep=': ')
Ravi: 92
Rohit: 75
Rahul: 86

Modifying dicts and example operations.

>>> marks
{'Ravi': 92, 'Rohit': 75, 'Rahul': 86}
>>> marks['Rajan'] = 79
>>> marks
{'Ravi': 92, 'Rohit': 75, 'Rahul': 86, 'Rajan': 79}
>>> del marks['Ravi']
>>> marks
{'Rohit': 75, 'Rahul': 86, 'Rajan': 79}
>>> len(marks)
3
>>> fav_books
{'thriller': 'The Da Vinci Code', 'fantasy': 'Harry Potter', 'detective': 'Sherlock Holmes'}
>>> "fantasy" in fav_books
True
>>> "satire" in fav_books
False

## Further Reading

- w3schools.com - Dictionaries
- Python Docs - Dict
- Python Dictionary Tutorial