0% found this document useful (0 votes)
17 views

Dictionary

This document discusses storing student information in dictionaries. It begins by showing how to store data in separate lists, but notes this becomes messy with large amounts of data. It then introduces dictionaries as a better way to store key-value pairs of data in one structure. It provides examples of creating, updating, and retrieving data from dictionaries. It also discusses dictionary keys and values, noting keys must be unique and immutable. The document concludes by introducing the OrderedDict and Counter modules.

Uploaded by

voduykhoa2504
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

Dictionary

This document discusses storing student information in dictionaries. It begins by showing how to store data in separate lists, but notes this becomes messy with large amounts of data. It then introduces dictionaries as a better way to store key-value pairs of data in one structure. It provides examples of creating, updating, and retrieving data from dictionaries. It also discusses dictionary keys and values, noting keys must be unique and immutable. The document concludes by introducing the OrderedDict and Counter modules.

Uploaded by

voduykhoa2504
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

Dictionary

HOW TO STORE STUDENT INFO


• so far, can store using separate lists for every info
names = ['Ana', 'John', 'Denise', 'Katy’]
grade = ['B', 'A+', 'A', 'A’]
course = [2.00, 6.0001, 20.002, 9.01]

• a separate list for each item


• each list must have the same length
• info stored across lists at same index, each index refers to info for a
different person
HOW TO UPDATE/RETRIEVE STUDENT INFO

• messy if have a lot of different info to keep track of


• must maintain many lists and pass them as arguments
• must always index using integers
• must remember to change multiple lists
A BETTER AND CLEANER WAY – A DICTIONARY
• nice to index item of interest directly (not always int)
• nice to use one data structure, no separate lists
A PYTHON DICTIONARY
• store pairs of data
• Key
• value
DICTIONARY LOOKUP
• similar to indexing into a list
• looks up the key
• returns the value associated with the key
• if key isn’t found, get an error
DICTIONARY OPERATIONS
grades = {'Ana':'B', 'John':'A+', 'Denise':'A', 'Katy':'A’}
• add an entry
grades['Sylvan'] = 'A’
• test if key in dictionary
'John' in grades → returns True
'Daniel' in grades → returns False
• delete entry
del(grades['Ana'])
DICTIONARY OPERATIONS
grades = {'Ana':'B', 'John':'A+', 'Denise':'A', 'Katy':'A’}
• get an iterable that acts like a tuple of all keys
grades.keys() → returns ['Denise','Katy','John','Ana’]
• get an iterable that acts like a tuple of all values
grades.values() → returns ['A', 'A', 'A+', 'B']
DICTIONARY KEYS and VALUES
• values
• any type (immutable and mutable)
• can be duplicates
• dictionary values can be lists, even other dictionaries!
• keys
• must be unique
• immutable type (int, float, string, tuple, bool)
• actually need an object that is hashable, but think of as immutable as all immutable types are
hashable
• careful with float type as a key
• no order to keys or values!
d = {4:{1:0}, (1,3):"twelve", 'const':[3.14,2.7,8.44]}
OrderedDict in Python
• An OrderedDict is a dictionary subclass that remembers the order
that keys were first inserted.
list vs dict

list dict
• ordered sequence of elements • matches “keys” to elements
• look up elements by an integer “values”
index • look up one item by integer
• indices have an order index another item
• index is an integer • no order is guaranteed
• key can be any immutable type
EXAMPLE: 3 FUNCTIONS TO ANALYZE SONG
LYRICS
1. create a frequency dictionary mapping str:int
2. find word that occurs the most and how many times
• use a list, in case there is more than one word
• return a tuple (list,int) for (words_list, highest_freq)
3. find the words that occur at least X times
• let user choose “at least X times”, so allow as parameter
• return a list of tuples, each tuple is a (list, int) containing the list of words
ordered by their frequency
• IDEA: From song dictionary, find most frequent word. Delete most common
word. Repeat. It works because you are mutating the song dictionary.
CREATING A DICTIONARY
USING THE DICTIONARY
LEVERAGING DICTIONARY PROPERTIES
HASHABLE OBJECTS
• An object that can be passed to the built-in hash function to get its
hash value.
• All objects in a set must be hashable and keys in a dictionary must be
bashable.
• Strings and numbers are hashable
• Tuples of strings and numbers are also hashable:
• Lists are not hashable
Counter module
• To find the most common elements in an iterable, you can use
Counter.most_common.
• The counter returns a list of tuples, where each tuple contains the
element and the element count.
NAMED TUPLES - 1
• A way to create simple, lightweight data structures similar to a class,
but without the overhead of defining a full class.
• Like dictionaries, they contain keys that are hashed to a particular
value. On the contrary, it supports both access from key-value and
iteration, the functionality that dictionaries lack.
NAMED TUPLES - 2
# Python code to demonstrate namedtuple()
from collections import namedtuple

# Declaring namedtuple()
Student = namedtuple('Student', ['name', 'age', 'DOB'])

# Adding values
S = Student('Nandini', '19', '2541997')

# Access using index


print("The Student age using index is : ", end="")
print(S[1])

# Access using name


print("The Student name using keyname is : ", end="")
print(S.name)

You might also like