In [ ]:
# Seminar Videos : http://tinyurl.com/TconSeminars

In [ ]:
# dictionaries
# hashes
# dict

# key(unique) => value(duplicated)
# ssn
# uin

In [1]:
# define  your dictionary.
students = {'ramesh':'python','pradeep':'python','prakash':'ruby'}
print students


{'prakash': 'ruby', 'ramesh': 'python', 'pradeep': 'python'}

In [4]:
my_empty = {}
print my_empty,type(my_empty)


{} <type 'dict'>

In [5]:
my_empty = dict()
print my_empty,type(my_empty)


{} <type 'dict'>

In [6]:
# cheatsheet
# list => ['apple','banana'],[],list()
# tuples => ('apple','banana'),(),tuple()
# dictionaries => {'a':'apple','b':'ball'},{},dict()

In [7]:
# access my dictionary
print students['ramesh']


python

In [8]:
# Adding a new key and value.
students['kumar'] = "aws"
print students


{'prakash': 'ruby', 'ramesh': 'python', 'pradeep': 'python', 'kumar': 'aws'}

In [9]:
# replace
students['kumar'] = 'openstack'
print students


{'prakash': 'ruby', 'ramesh': 'python', 'pradeep': 'python', 'kumar': 'openstack'}

In [10]:
# A key having multiple values.
students['kumar'] = ['openstack','aws']
print students


{'prakash': 'ruby', 'ramesh': 'python', 'pradeep': 'python', 'kumar': ['openstack', 'aws']}

In [12]:
# in operator
# in operator is true for the key values.
print 'prakash' in students
print 'ruby' in students


True
False

In [13]:
# function
print dir(students)


['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']

In [14]:
# get
print help(students.get)


Help on built-in function get:

get(...)
    D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.

None

In [19]:
print students.get('kumar')
print students['kumar']
print students.get('hari')
print students['hari']


['openstack', 'aws']
['openstack', 'aws']
None
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-19-70249d466107> in <module>()
      2 print students['kumar']
      3 print students.get('hari')
----> 4 print students['hari']

KeyError: 'hari'

In [21]:
# has_key
print help(students.has_key)


Help on built-in function has_key:

has_key(...)
    D.has_key(k) -> True if D has a key k, else False

None

In [22]:
print students.has_key('kumar')
print students.has_key('hari')


True
False

In [23]:
print 'kumar' in students
print 'hari' in students


True
False

In [24]:
# update
print help(students.update)


Help on built-in function update:

update(...)
    D.update([E, ]**F) -> None.  Update D from dict/iterable E and F.
    If E present and has a .keys() method, does:     for k in E: D[k] = E[k]
    If E present and lacks .keys() method, does:     for (k, v) in E: D[k] = v
    In either case, this is followed by: for k in F: D[k] = F[k]

None

In [25]:
print students


{'prakash': 'ruby', 'ramesh': 'python', 'pradeep': 'python', 'kumar': ['openstack', 'aws']}

In [30]:
fruits = {'a':'apple','b':'banana'}
print fruits


{'a': 'apple', 'b': 'banana'}

In [31]:
students.update(fruits)
print students


{'a': 'apple', 'kumar': ['openstack', 'aws'], 'ramesh': 'python', 'b': 'banana', 'prakash': 'ruby', 'pradeep': 'python'}

In [32]:
# fromkeys
print help(students.fromkeys)


Help on built-in function fromkeys:

fromkeys(...)
    dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.
    v defaults to None.

None

In [34]:
names = ('hari','dinesh','kumar')
print students.fromkeys(names,"python")
print students.fromkeys(names)


{'kumar': 'python', 'dinesh': 'python', 'hari': 'python'}
{'kumar': None, 'dinesh': None, 'hari': None}

In [35]:
# keys,values,items

# keys
print help(students.keys)
print students.keys()


Help on built-in function keys:

keys(...)
    D.keys() -> list of D's keys

None
['a', 'kumar', 'ramesh', 'b', 'prakash', 'pradeep']

In [42]:
# iterkeys
print help(students.iterkeys)
print students.iterkeys
print students.iterkeys()
for value in students.iterkeys():
    print value


Help on built-in function iterkeys:

iterkeys(...)
    D.iterkeys() -> an iterator over the keys of D

None
<built-in method iterkeys of dict object at 0x7fa53c859c58>
<dictionary-keyiterator object at 0x7fa527fb8100>
a
kumar
ramesh
b
prakash
pradeep

In [44]:
# viewkeys
print help(students.viewkeys)
print students.viewkeys()


Help on built-in function viewkeys:

viewkeys(...)
    D.viewkeys() -> a set-like object providing a view on D's keys

None
dict_keys(['a', 'kumar', 'ramesh', 'b', 'prakash', 'pradeep'])

In [36]:
# values
# itervalues
# viewvalues

print help(students.values)
print students.values()


Help on built-in function values:

values(...)
    D.values() -> list of D's values

None
['apple', ['openstack', 'aws'], 'python', 'banana', 'ruby', 'python']

In [37]:
# items
# iteritems
# viewitems

print help(students.items)
print students.items()


Help on built-in function items:

items(...)
    D.items() -> list of D's (key, value) pairs, as 2-tuples

None
[('a', 'apple'), ('kumar', ['openstack', 'aws']), ('ramesh', 'python'), ('b', 'banana'), ('prakash', 'ruby'), ('pradeep', 'python')]

In [47]:
# pop
print help(students.pop)
students.pop('a')
print students

students.pop('a')


Help on built-in function pop:

pop(...)
    D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
    If key is not found, d is returned if given, otherwise KeyError is raised

None
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-47-614ee2151d81> in <module>()
      1 # pop
      2 print help(students.pop)
----> 3 students.pop('a')
      4 print students
      5 

KeyError: 'a'

In [51]:
# popitem
print help(students.popitem)
print students.popitem()
print students.popitem()


Help on built-in function popitem:

popitem(...)
    D.popitem() -> (k, v), remove and return some (key, value) pair as a
    2-tuple; but raise KeyError if D is empty.

None
('ramesh', 'python')
('b', 'banana')

In [ ]:
# tasks
# zip
# del

In [52]:
# setdefault
print help(students.setdefault)


Help on built-in function setdefault:

setdefault(...)
    D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D

None

In [53]:
students.setdefault('hari','python')


Out[53]:
'python'

In [54]:
print students


{'hari': 'python', 'prakash': 'ruby', 'pradeep': 'python'}

In [55]:
print students.setdefault('hari','django')


python

In [56]:
print students


{'hari': 'python', 'prakash': 'ruby', 'pradeep': 'python'}

In [57]:
print students.setdefault('kumar','python')
print students


python
{'kumar': 'python', 'hari': 'python', 'prakash': 'ruby', 'pradeep': 'python'}

In [58]:
students['hari']='django'
print students


{'kumar': 'python', 'hari': 'django', 'prakash': 'ruby', 'pradeep': 'python'}

In [ ]:
# tomorrow
# clear
# copy - shallowcopy

In [ ]: