dictionary

=Dictionary= A dictionary is mutable and is another container type that can store any number of Python objects, including other container types. Dictionaries consist of pairs (called items) of keys and their corresponding values. Python dictionaries are also known as associative arrays or hash tables. The general syntax of a dictionary is as follows: code dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} code || You can create dictionary in the following way as well: code dict1 = { 'abc': 456 }; dict2 = { 'abc': 123, 98.6: 37 }; code || Each key is separated from its value by a colon, the items are separated by commas, and the whole thing is enclosed in curly braces. An empty dictionary without any items is written with just two curly braces, like this: {}. Keys are unique within a dictionary while values may not be. The values of a dictionary can be of any type, but the keys must be of an immutable data type such as strings, numbers, or tuples. = Accessing Values in Dictionary: = To access dictionary elements, you use the familiar square brackets along with the key to obtain its value:

Example:
code #!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

print "dict['Name']: ", dict['Name']; print "dict['Age']: ", dict['Age']; code || This will produce following result: code dict['Name']: Zara dict['Age']: 7 code || If we attempt to access a data item with a key which is not part of the dictionary, we get an error as follows: code #!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

print "dict['Alice']: ", dict['Alice']; code || This will produce following result: code dict['Zara']: Traceback (most recent call last): File "test.py", line 4, in    print "dict['Alice']: ", dict['Alice']; KeyError: 'Alice' code || = Updating Dictionary: = <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">You can update a dictionary by adding a new entry or item (i.e., a key-value pair), modifying an existing entry, or deleting an existing entry as shown below:

Example:
code <span style="font-family: 'Courier New',monospace; font-size: 12px;">#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

dict['Age'] = 8; # update existing entry dict['School'] = "DPS School"; # Add new entry

print "dict['Age']: ", dict['Age']; print "dict['School']: ", dict['School']; code || <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">This will produce following result: code <span style="font-family: 'Courier New',monospace; font-size: 12px;">dict['Age']: 8 dict['School']: DPS School code || = Delete Dictionary Elements: = <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">You can either remove individual dictionary elements or clear the entire contents of a dictionary. You can also delete entire dictionary in a single operation. <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">To explicitly remove an entire dictionary, just use the **del** statement:

Example:
code <span style="font-family: 'Courier New',monospace; font-size: 12px;">#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

del dict['Name']; # remove entry with key 'Name' dict.clear;    # remove all entries in dict del dict ;       # delete entire dictionary

print "dict['Age']: ", dict['Age']; print "dict['School']: ", dict['School']; code || <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">This will produce following result. Note an exception raised, this is because after **del dict**dictionary does not exist any more: code <span style="font-family: 'Courier New',monospace; font-size: 12px;">dict['Age']: Traceback (most recent call last): File "test.py", line 8, in    print "dict['Age']: ", dict['Age']; TypeError: 'type' object is unsubscriptable code || <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">**Note:** del method is discussed in subsequent section. = Properties of Dictionary Keys: = <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">Dictionary values have no restrictions. They can be any arbitrary Python object, either standard objects or user-defined objects. However, same is not true for the keys. <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">There are two important points to remember about dictionary keys: <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">**(a)** More than one entry per key not allowed. Which means no duplicate key is allowed. When duplicate keys encountered during assignment, the last assignment wins.

Example:
code <span style="font-family: 'Courier New',monospace; font-size: 12px;">#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};

print "dict['Name']: ", dict['Name']; code || <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">This will produce following result: code <span style="font-family: 'Courier New',monospace; font-size: 12px;">dict['Name']: Manni code || <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">**(b)** Keys must be immutable. Which means you can use strings, numbers, or tuples as dictionary keys but something like ['key'] is not allowed.

Example:
code <span style="font-family: 'Courier New',monospace; font-size: 12px;">#!/usr/bin/python

dict = {['Name']: 'Zara', 'Age': 7};

print "dict['Name']: ", dict['Name']; code || <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">This will produce following result. Note an exception raised: code <span style="font-family: 'Courier New',monospace; font-size: 12px;">Traceback (most recent call last): File "test.py", line 3, in    dict = {['Name']: 'Zara', 'Age': 7}; TypeError: list objects are unhashable code || = Built-in Dictionary Functions & Methods: = <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">Python includes following dictionary functions Compares elements of both dict. || Gives the total length of the dictionary. This would be equal to the number of items in the dictionary. || Produces a printable string representation of a dictionary || Returns the type of the passed variable. If passed variable is dictionary then it would return a dictionary type. || <span style="background-color: #ffffff; font-family: verdana,helvetica,arial,sans-serif; font-size: 11px; text-align: justify;">Python includes following dictionary methods Removes all elements of dictionary //dict// || Returns a shallow copy of dictionary //dict// || Create a new dictionary with keys from seq and values //set// to //value//. || For //key// key, returns value or default if key not in dictionary || Returns //true// if key in dictionary //dict//, //false// otherwise || Returns a list of //dict//'s (key, value) tuple pairs || Returns list of dictionary dict's keys || Similar to get, but will set dict[key]=default if //key// is not already in dict || Adds dictionary //dict2//'s key-values pairs to //dict// || Returns list of dictionary //dict2//'s values ||
 * ~ SN ||~ Function with Description ||
 * 1 || [|cmp(dict1, dict2)]
 * 2 || [|len(dict)]
 * 3 || [|str(dict)]
 * 4 || [|type(variable)]
 * ~ SN ||~ Methods with Description ||
 * 1 || [|dict.clear]
 * 2 || [|dict.copy]
 * 2 || [|dict.fromkeys]
 * 3 || [|dict.get(key, default=None)]
 * 4 || [|dict.has_key(key)]
 * 5 || [|dict.items]
 * 6 || [|dict.keys]
 * 7 || [|dict.setdefault(key, default=None)]
 * 8 || [|dict.update(dict2)]
 * 9 || [|dict.values]