Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2014
714
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.18 KB | None | 0 0
  1. class Classification:
  2.     def __init__(self, kingdom, phylum, klass, species):
  3.         self.kingdom = kingdom
  4.         self.phylum = phylum
  5.         self.klass = klass
  6.         self.species = species
  7.  
  8. c1 = Classification('Kingdom1', 'Phylum1', 'Class1', 'Species1')
  9. c2 = Classification('Kingdom1', 'Phylum1', 'Class1', 'Species2')
  10. c3 = Classification('Kingdom1', 'Phylum2', 'Class3', 'Species3')
  11. c4 = Classification('Kingdom1', 'Phylum2', 'Class4', 'Species4')
  12. c5 = Classification('Kingdom2', 'Phylum3', 'Class5', 'Species5')
  13.  
  14. all_classifications = [c1, c2, c3, c4, c5]
  15.  
  16. from collections import defaultdict
  17.  
  18. def nested_to_tree(key, source):
  19.     result = {'name': key, 'children':[]}
  20.     for key, value in source.items():
  21.         if isinstance(value, list):
  22.             result['children'] = value
  23.         else:
  24.             child = nested_to_tree(key, value)
  25.             result['children'].append(child)
  26.  
  27.     return result
  28.  
  29. nested_dict = defaultdict(
  30.     lambda: defaultdict(
  31.         lambda: defaultdict(list)
  32.     )
  33. )
  34.  
  35. for c in all_classifications:
  36.     nested_dict[c.kingdom][c.phylum][c.klass].append(c.species)
  37.  
  38. result = nested_to_tree('root', nested_dict)
  39. print(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement