in And not in OperatorsAre there any questions before I begin?
After I finish talking I will pass out the papers for today's graded quiz.
Write your name clearly at the top.
When you finish the Quiz hand it to me.
Then you can work on the Class Exercise and today's ungraded quiz.
I have posted a solution to homework 2 here.
Let's take a look.
I have posted homework 4 here.
It is due this coming Sunday at 11:59 PM.
print statements
>>> students = {}
>>> students["09329034"] = ("Jane", "Adams","jadamsjadams@yahoo.com")
>>> students["09929034"] = ("Alexander", "Smith","bigboy@hotmail.com")
>>> students["05431692"] = ("Christopher", "Cannon","chris@nomail.com")
>>> students["07511379"] = ("Joseph", "Malloney","jmaljoem@yahoo.com")
>>> students["04175276"] = ("James", "Reynolds","jrjim.reynolds@gmail.com")
for loop ...
>>> for id in students:
... print(id, students[id])
...
09329034 ('Jane', 'Adams', 'jadamsjadams@yahoo.com')
09929034 ('Alexander', 'Smith', 'bigboy@hotmail.com')
05431692 ('Christopher', 'Cannon', 'chris@nomail.com')
07511379 ('Joseph', 'Malloney', 'jmaljoem@yahoo.com)
04175276 ('James', 'Reynolds', 'jrjim.reynolds@gmail.com')
sorted
sorted takes as an argument anything
that can be used in a for loop ...
sorted on a list of numbers
>>> nums = [5,8,2,6,1,9,3]
>>> sorted(nums) [1, 2, 3, 5, 6, 8, 9]
>>> sorted(students) ['04175276', '05431692', '07511379', '09329034', '09929034']
sorted in a for loop over
a dictionary
>>> for id in sorted(students):
... print(id, students[id])
...
04175276 ('James', 'Reynolds', 'jrjim.reynolds@gmail.com')
05431692 ('Christopher', 'Cannon', 'chris@nomail.com')
07511379 ('Joseph', 'Malloney', 'jmaljoem@yahoo.co')
09329034 ('Jane', 'Adams', 'jadamsjadams@yahoo.com')
09929034 ('Alexander', 'Smith', 'bigboy@hotmail.com')
sorted on a dictionary to create a sorted list
of keys
>>> sorted_ids = sorted(students) >>> sorted_ids ['04175276', '05431692', '07511379', '09329034', '09929034']
>>> sorted_ids.reverse() >>> sorted_ids ['09929034', '09329034', '07511379', '05431692', '04175276']
>>> for id in sorted_ids:
... print(id, students[id])
...
09929034 ('Alexander', 'Smith', 'bigboy@hotmail.com')
09329034 ('Jane', 'Adams', 'jadamsjadams@yahoo.com')
07511379 ('Joseph', 'Malloney', 'jmaljoem@yahoo.com')
05431692 ('Christopher', 'Cannon', 'chris@nomail.com')
04175276 ('James', 'Reynolds', 'jrjim.reynolds@gmail.com')
in And not in Operatorsin
operator
>>> numbers [1, 2, 3, 4, 5] >>> 5 in numbers True >>> 6 in numbers False
not in operator tells us whether a value is
not found in a list
>>> 5 not in numbers False >>> 6 not in numbers True
not and in together make a single
operator
>>> words_integers
{'three': 3, 'five': 5, 'two': 2, 'one': 1, 'four': 4}
>>> "three" in words_integers
True
>>> 3 in words_integers
False
del statement
del DICTIONARY_NAME[KEY]
where DICTIONARY_NAME is a variable that points
to the dictionary object
>>> words_integers
{'three': 3, 'five': 5, 'two': 2, 'one': 1, 'four': 4}
>>> del words_integers["five"]
>>> words_integers
{'three': 3, 'two': 2, 'one': 1, 'four': 4}
del words_integers["six"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'six'
len function can be used with a dictionary
>>> email_addresses
{'Chris': 'chrisk@yahoo.com', 'Alan': 'alanh@gmail.com'}
>>> len(email_addresses)
2
>>> words_integers
{'five': 5, 'one': 1, 'six': 6, 'two': 2, 'four': 4, 'three': 3}
>>> len(words_integers)
6
bool ...
if and while statements both need
boolean expressions
andornotvalue == 0 answer == "" num != 0
>>> value = ""
>>> if value:
... print("True")
... else:
... print("False")
...
False
>>> value = "x"
>>> if value:
... print("True")
... else:
... print("False")
...
True
>>> def true_or_false(value):
... if value:
... print("True")
... else:
... print("False")
...
>>> true_or_false(0) False >>> true_or_false(0.0) False
>>> true_or_false(1) True >>> true_or_false(4) True
>>> true_or_false(-1) True >>> true_or_false(-100) True
>>> file = open("students.txt", "r")
>>> file
<_io.TextIOWrapper name="students.txt" mode="r" encoding="UTF-8">
>>> true_or_false(file)
True
NoneNone points to nothingNone is false
>>> true_or_false(None) False
>>> strings_integers = {"one":1, "two":2, "three":3}
>>> strings_integers["three"]
3
>>> integers_strings = {1:"one", 2:"two", 3:"three"}
>>> integers_strings[3]
"three"
>>> floats_strings = {1.0:"one", 2.0:"two", 3.0:"three"}
>>> floats_strings[3.0]
"three"
>>> tuples_integers = {(1,1):1, (2,2):2, (3,3):3}
>>> tuples_integers[(3,3)]
3
>>>
>>> lists_integers = {[1,1]:1, [2,2]:2, [3,3]:3}
Traceback (most recent call last):
File <stdin>, line 1, in <module>
TypeError: unhashable type: "list"
>>> jumble = {1:1, 2:2.0, 3:"three", 4:(4,4), 5:[5]}
>>> for key in jumble:
... print(jumble[key])
...
1
2.0
three
(4, 4)
[5]
>>> jumble_2 = {1:1, 2.0:2, "3":3}
>>> for key in jumble_2:
... print(jumble_2[key])
...
1
2
3
| Method | Description |
|---|---|
| clear() | Clears the contents of a dictionary. |
| get(key) | Gets the value associated with a specified key. If the key is not found, the method does not raise an exception. Instead, it returns a default value. You can give the default value as a second argument. |
| pop(key) | Returns the value associated with a specified key and removes that key-value pair from the dictionary. If the key is not found, the method returns a default value. You can give the default value as a second argument. |
| popitem() | Returns the last key-value pair added to the dictionary as a tuple. |
| items() | Returns all the keys in a dictionary and their associated values. |
| keys() | Returns all the keys in a dictionary. |
| values() | Returns all the values in the dictionary. |
clear method removes all entries from a directory
>>> quiz_scores
{"Mary Jones": [98, 95, 93, 92], "Tim Tyler": [88, 81, 79, 85], "John Smith": [100, 90, 85]}
>>> quiz_scores.clear()
>>> quiz_scores
{}
>>> quiz_scores = {}
id function
>>> quiz_scores
{"John Smith": [100, 90, 85], "Tim Tyler": [88, 81, 79], "Mary Jones": [98, 95, 93]}
>>> id(quiz_scores)
139691305684744
>>> quiz_scores.clear()
>>> id(quiz_scores)
140083427949384
>>> quiz_scores
{}
quiz_scores = {}
id on
quiz_scores
>>> id(quiz_scores) 140083428105992
>>> scores = quiz_scores["Mary Jones"] >>> scores [98, 95, 93]
>>> scores = quiz_scores["Mary Jonez"]
Traceback (most recent call last):
File <stdin>, line 1, in <module>
KeyError: "Mary Jonez"
>>> scores = quiz_scores.get("Mary Jones")
>>> scores
[98, 95, 93]
None
>>> scores = quiz_scores.get("Mary Jonez")
>>> print(scores)
None
False in an
if statementfor loop there would be
no reason to use get
>>> for key in quiz_scores: ... print(key, ":", quiz_scores[key]) ... Tim Tyler : [88, 81, 79] Mary Jones : [98, 95, 93] John Smith : [100, 90, 85]
>>> def get_score(key): ... score = quiz_scores.get(key) ... if score: ... return score ... else: ... print(key, "is not a valid key") ... >>>
>>> get_score("Mary Jones")
[98, 95, 93]
>>> get_score("Mary Jonez")
Mary Jonez is not a valid key
None...
>>> quiz_scores
{"Mary Jones": [98, 95, 93], "Tim Tyler": [88, 81, 79], "John Smith": [100, 90, 85]}
>>> quiz_scores.pop("Mary Jones")
[98, 95, 93]
>>> quiz_scores
{"Tim Tyler": [88, 81, 79], "John Smith": [100, 90, 85]}
None
>>> quiz_scores
{'Tim Tyler': [88, 81, 79], 'John Smith': [100, 90, 85]}
>>> quiz_scores.popitem()
('John Smith', [100, 90, 85])
>>> quiz_scores
{'Tim Tyler': [88, 81, 79]}
>>> names_usernames
{"Mary Jones": "mjones", "John Smith": "wombat", "Tim Tyler": "ttyler"}
>>> items = names_usernames.items()
>>> items
[('Mary Jones', 'mjones'), ('John Smith', 'wombat'), ('Tim Tyler', 'ttyler')]
>>> names_usernames
{"Mary Jones": "mjones", "Tim Tyler": "ttyler", "John Smith": "wombat"}
>>> items = names_usernames.items()
>>> items
dict_items([("Mary Jones", "mjones"), ("Tim Tyler", "ttyler"), ("John Smith", "wombat")])
dict_items?dict_items are one member of a family of data types called
view objects
>>> items = names_usernames.items() >>> type(items) <type "list">
>>> names_usernames["Fred Farnsworth"] = "fredster"
>>> names_usernames
{"Fred Farnsworth": "fredster", "Mary Jones": "mjones", "John Smith": "wombat", "Tim Tyler": "ttyler"}
>>> items
[("Mary Jones", "mjones"), ("John Smith", "wombat"), ("Tim Tyler", "ttyler")]dict-items view object will show the new
entry
>>> names_usernames
{"Mary Jones": "mjones", "Tim Tyler": "ttyler", "John Smith": "wombat"}
>>> names_usernames["Fred Farnsworth"] = "fredster"
>>> items
dict_items([("Mary Jones", ("Tim Tyler", "ttyler"), ("John Smith", "wombat"), "mjones"), ("Fred Farnsworth", "fredster")])
>>> listing[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: "dict_items" object does not support indexing
for loop
for pair in items:
... print(pair)
...
("Mary Jones", "mjones")
("John Smith", "wombat")
("Tim Tyler", "ttyler")
("Fred Farnsworth", "fredster")
>>> for pair in listing:
... print("key:", pair[0], "value", pair[1])
...
key: Mary Jones value mjones
key: John Smith value wombat
key: Tim Tyler value ttyler
key: Fred Farnsworth value fredster
>>> names_usernames.keys() ["Fred Farnsworth", "Mary Jones", "John Smith", "Tim Tyler"]
>>> names_usernames.keys()
dict_keys(["Mary Jones", "John Smith", "Tim Tyler", "Fred Farnsworth"])
>>> names_usernames.values() ["fredster", "mjones", "wombat", "ttyler"]
dict_values view object
>>> names_usernames.values()
dict_values(["mjones", "wombat", "ttyler", "fredster"])
<li class="flat"><a href="#collecting_testing_assignments">Collecting and Testing Assignments</a></li> <li class="flat"><a href="#notifying_missing_work">Notifying You About Missing Work</a></li> <li class="flat"><a href="#late_work">Late Work</a>
"collecting_testing_assignments": "Collecting and Testing Assignments" "notifying_missing_work": "Notifying You About Missing Work" "late_work": "Late Work"
<h4 class="topic" id="collecting_testing_assignments">Collecting and Testing Assignments</h4> <h4 class="topic" id="notifying_missing_work">Notifying You About Missing Work</h4> <h4 class="topic" id="late_work">Late Work</h4>
"collecting_testing_assignments": "Collecting and Testing Assignments" "notifying_missing_work": "Notifying You About Missing Work" "late_work": "Late Work"