fork download
  1. def iteritems_recursive(d):
  2. if isinstance(d, dict):
  3. for k,v in d.iteritems():
  4. for k1,v1 in iteritems_recursive(v):
  5. yield (k,)+k1, v1
  6. elif isinstance(d, list) or isinstance(d, tuple):
  7. for k,v in enumerate(d):
  8. for k1,v1 in iteritems_recursive(v):
  9. yield (k,)+k1, v1
  10. else:
  11. yield (), d
  12.  
  13. from collections import OrderedDict
  14.  
  15. dic = {
  16. u'resources': {
  17. u'info': {
  18. u'load': (u'37', u'17')},
  19. u'peak': {
  20. u'load': (u'0', u'1')}},
  21. u'statistics': (
  22. None,
  23. OrderedDict([
  24. (u'depth', u'0'),
  25. (u'depth2', u'0'),
  26. (u'depth3', u'0')]))}
  27.  
  28. for p,v in iteritems_recursive(dic):
  29. print p, "->", v
Success #stdin #stdout 0.01s 7856KB
stdin
Standard input is empty
stdout
(u'statistics', 0) -> None
(u'statistics', 1, u'depth') -> 0
(u'statistics', 1, u'depth2') -> 0
(u'statistics', 1, u'depth3') -> 0
(u'resources', u'info', u'load', 0) -> 37
(u'resources', u'info', u'load', 1) -> 17
(u'resources', u'peak', u'load', 0) -> 0
(u'resources', u'peak', u'load', 1) -> 1