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 getting the newsletter.