MCPcopy
hub / github.com/qiwsir/StarterLearningPython / Ratings

Class Ratings

newcodes/answers/q72.py:6–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4from bisect import bisect_left, insort_left
5
6class Ratings(dict):
7 def __init__(self, *args, **kwargs):
8 dict.__init__(self, *args, **kwargs)
9 self._rating = [(v, k) for k, v in dict.items(self)]
10 self._rating.sort()
11 print(self._rating)
12 def copy(self):
13 return Ratings(self)
14
15 def __setitem__(self, k, v):
16 if k in self:
17 del self._rating[self.rating(k)]
18 dict.__setitem__(self, k, v)
19 insort_left(self._rating, (v, k))
20
21 def __delitem__(self, k):
22 del self._rating[self.rating(k)]
23 dict.__delitem__(self, k)
24
25 __len__ = dict.__len__
26 __contains__ = dict.__contains__
27
28 def __iter__(self):
29 for v,k in self._rating:
30 yield k
31
32 iterkeys = __iter__
33
34 def keys(self):
35 return list(self)
36
37 def rating(self, key):
38 item = self[key], key
39 i = bisect_left(self._rating, item)
40 print(i)
41 if item == self._rating[i]:
42 return i
43 raise LookupError("item not found in rating")
44
45 def get_value_by_rating(self, rating):
46 return self._rating[rating][0]
47
48 def get_key_by_rating(self, rating):
49 return self._rating[rating][1]
50
51if __name__ == "__main__":
52 d = {"zhangsan":78, "lisi":98, "wangwu":76, "zhaoliu":82}

Callers 2

copyMethod · 0.85
q72.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected