This preview shows page 1-2-3-4-5-6-7-8-54-55-56-57-58-59-60-110-111-112-113-114-115-116-117 out of 117 pages.
61A Lecture 13Wednesday, September 28Tuesday, September 27, 2011Dictionaries{'Dem': 0}2Tuesday, September 27, 2011Limitations on Dictionaries3Tuesday, September 27, 2011Limitations on DictionariesDictionaries are unordered collections of key-value pairs.3Tuesday, September 27, 2011Limitations on DictionariesDictionaries are unordered collections of key-value pairs.Dictionaries do have two restrictions:3Tuesday, September 27, 2011Limitations on DictionariesDictionaries are unordered collections of key-value pairs.Dictionaries do have two restrictions:•A key of a dictionary cannot be an object of a mutable built-in type.3Tuesday, September 27, 2011Limitations on DictionariesDictionaries are unordered collections of key-value pairs.Dictionaries do have two restrictions:•A key of a dictionary cannot be an object of a mutable built-in type.•Two keys cannot be equal. There can be at most one value for a given key.3Tuesday, September 27, 2011Limitations on DictionariesDictionaries are unordered collections of key-value pairs.Dictionaries do have two restrictions:•A key of a dictionary cannot be an object of a mutable built-in type.•Two keys cannot be equal. There can be at most one value for a given key.This first restriction is tied to Python's underlying implementation of dictionaries.3Tuesday, September 27, 2011Limitations on DictionariesDictionaries are unordered collections of key-value pairs.Dictionaries do have two restrictions:•A key of a dictionary cannot be an object of a mutable built-in type.•Two keys cannot be equal. There can be at most one value for a given key.This first restriction is tied to Python's underlying implementation of dictionaries.The second restriction is an intentional consequence of the dictionary abstraction.3Tuesday, September 27, 2011Implementing Dictionaries4Tuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary."""Tuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary.""" records = []Tuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary.""" records = [] def getitem(key): for k, v in records: if k == key: return vTuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary.""" records = [] def getitem(key): for k, v in records: if k == key: return v def setitem(key, value):Tuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary.""" records = [] def getitem(key): for k, v in records: if k == key: return v def setitem(key, value): for item in records: if item[0] == key: item[1] = value returnTuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary.""" records = [] def getitem(key): for k, v in records: if k == key: return v def setitem(key, value): for item in records: if item[0] == key: item[1] = value return records.append([key, value])Tuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary.""" records = [] def getitem(key): for k, v in records: if k == key: return v def setitem(key, value): for item in records: if item[0] == key: item[1] = value return records.append([key, value]) def dispatch(message, key=None, value=None):Tuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary.""" records = [] def getitem(key): for k, v in records: if k == key: return v def setitem(key, value): for item in records: if item[0] == key: item[1] = value return records.append([key, value]) def dispatch(message, key=None, value=None): if message == 'getitem': return getitem(key)Tuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary.""" records = [] def getitem(key): for k, v in records: if k == key: return v def setitem(key, value): for item in records: if item[0] == key: item[1] = value return records.append([key, value]) def dispatch(message, key=None, value=None): if message == 'getitem': return getitem(key) elif message == 'setitem': setitem(key, value)Tuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary.""" records = [] def getitem(key): for k, v in records: if k == key: return v def setitem(key, value): for item in records: if item[0] == key: item[1] = value return records.append([key, value]) def dispatch(message, key=None, value=None): if message == 'getitem': return getitem(key) elif message == 'setitem': setitem(key, value) elif message == 'keys': return tuple(k for k, _ in records)Tuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary.""" records = [] def getitem(key): for k, v in records: if k == key: return v def setitem(key, value): for item in records: if item[0] == key: item[1] = value return records.append([key, value]) def dispatch(message, key=None, value=None): if message == 'getitem': return getitem(key) elif message == 'setitem': setitem(key, value) elif message == 'keys': return tuple(k for k, _ in records) elif message == 'values': return tuple(v for _, v in records)Tuesday, September 27, 2011Implementing Dictionaries4 def make_dict(): """Return a functional implementation of a dictionary.""" records = [] def getitem(key): for k, v in records: if k == key: return v def setitem(key, value): for item in records: if item[0] == key: item[1] = value return records.append([key, value]) def dispatch(message, key=None, value=None): if message == 'getitem': return getitem(key) elif message == 'setitem': setitem(key, value) elif message == 'keys': return tuple(k for k, _ in records) elif message == 'values': return tuple(v for _, v in records) return dispatchTuesday, September 27, 2011Implementing Dictionaries4 def
View Full Document