

Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Some concept of Data Structures are Abstract, Balance Factor, Complete Binary Tree, Dynamically, Storage, Implementation, Sequential Search, Advanced Data Structures, Graph Coloring Two, Insertion Sort. Main points of this lecture are: Abstract Data Type, Dictionary, Map, Method Call, Class Name, Description, Constructs An Empty Dictionary, Key-Value Entry, Replaces, Old Value
Typology: Study notes
1 / 2
This page cannot be seen from the preview
Don't miss anything!


from entry import Entry
class ListDict(object): """Dictionary implemented with a Python list."""
def init(self): self._table = []
def getitem(self, key): """Returns the value associated with key or returns None if key does not exist.""" entry = Entry(key, None) try: index = self._table.index(entry) return self._table[index].getValue() except: return None
def delitem(self, key): """Removes the entry associated with key.""" entry = Entry(key, None) try: index = self._table.index(entry) self._table.pop(index) except: return
def str(self): """Returns string repr. of the dictionary""" resultStr = "{" for item in self._table: resultStr = resultStr + " " + str(item) return resultStr + " }"
def iter(self): """Iterates over keys of the dictionary""" for item in self._table: yield item.getKey() raise StopIteration
Name Bob
class Entry(object): """A key/value pair."""
def init(self, key, value): self._key = key self._value = value
def getKey(self): return self._key
def getValue(self): return self._value
def setValue(self, newValue): self._value = newValue
def eq(self, other): if not isinstance(other, Entry): return False return self._key == other._key
def str(self): return str(self._key) + ":" + str(self._value)
from entry import Entry from unordered_linked_list import UnorderedList
class ChainingDict(object): """Dictionary implemented using hashing with chaining."""
def init(self, capacity = 8): self._capacity = capacity self._table = [] for index in range(self._capacity): self._table.append(UnorderedList()) self._size = 0 self._index = None
def contains(self, key): """Returns True if key is in the dictionary or False otherwise.""" self._index = abs(hash(key)) % self._capacity entry = Entry(key, None)
return self._table[self._index].search(entry)
def getitem(self, key): """Returns the value associated with key or returns None if key does not exist.""" if key in self: entry = Entry(key, None) entry = self._table[self._index].remove(entry) self._table[self._index].add(entry) return entry.getValue() else: return None
def delitem(self, key): """Removes the entry associated with key.""" entry = Entry(key, None) if key in self: entry = Entry(key, None) entry = self._table[self._index].remove(entry) self._size -= 1
def setitem(self, key, value): """Inserts an entry with key/value if key does not exist or replaces the existing value with value if key exists.""" entry = Entry(key, value) if key in self: entry = self._table[self._index].remove(entry) entry.setValue(value) else: self._size += 1 self._table[self._index].add(entry)
def len(self): return self._size
def str(self): result = "HashDict: capacity = " +
str(self._capacity) + ", load factor = " +
str(len(self) / self._capacity) for i in range(self._capacity): result += "\nRow " + str(i)+": "+str(self._table[i]) return result
def iter(self): """Iterates over the keys of the dictionary"""