Skip to content

Instantly share code, notes, and snippets.

@shaunlebron
Created October 31, 2012 17:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shaunlebron/3988350 to your computer and use it in GitHub Desktop.
Save shaunlebron/3988350 to your computer and use it in GitHub Desktop.
How readable is this?
entries = getListOfTableEntriesSomeWhere()
entryTree = MyTree(entries)
################################
def group_entries(groupclass, entries, keyfunc):
return [groupclass(k,g) for k,g in itertools.groupby(entries,keyfunc)]
key_sys = lambda x: x.sys
key_subsys = lambda x: x.subsys
key_var = lambda x: x.var
key_all = lambda x: (x.sys, x.subsys, x.var)
class MyTree:
def __init__(self, entries):
self.entries = sorted(entries, key=key_all)
self.name = name
self.systems = group_entries(MySys, self.entries, key_sys)
class MySys:
def __init__(self, name, entries):
self.name = name
self.subsystems = group_entries(MySubsys, entries, key_subsys)
class MySubsys:
def __init__(self, name, entries):
self.name = name
self.variables = group_entries(MyVar, entries, key_var)
class MyVar:
def __init__(self, name, entries):
self.name = name
self.entries = list(entries)
@shaunlebron
Copy link
Author

Yeah, I like that better actually. Got rid of the indirection. Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment