method chains: head
Method chains are an amazing programming pattern if you're building an API that needs to be expressive in how it changes data. In this series of video's we will make a pandas-like datacontainer for lists of dictionaries.
This is the class that we have now.
class Clumper: def __init__(self, blob): self.blob = blob def keep(self, *funcs): data = self.blob for func in funcs: data = [d for d in data if func(d)] return Clumper(data) def head(self, n): return Clumper([self.blob[i] for i in range(n)]) def tail(self, n): return Clumper([self.blob[-i] for i in range(1, n+1)])
We can now perform commands like;
(Clumper(poke_dict) .keep(lambda d: 'Grass' in d['type'], lambda d: d['hp'] < 60) .head(10) .blob)
(Clumper(poke_dict) .keep(lambda d: 'Grass' in d['type'], lambda d: d['hp'] < 60) .tail(10) .blob)
Feedback? See an issue? Something unclear? Feel free to mention it here.
If you want to be kept up to date, consider signing up for the newsletter.