fork download
  1. #!/usr/bin/env python3
  2. import json
  3. import random
  4. from collections import OrderedDict
  5. from functools import reduce
  6.  
  7. rules = [
  8. (('B', 'K1'), lambda: random.randint(0, 5)),
  9. (('B', 'K2'), lambda: random.randint(1, 20)),
  10. (('A', 'K3'), lambda: random.choice(["QWERTY", "ASDFGHJ"]))
  11. ]
  12.  
  13. result = OrderedDict()
  14. for (*keys, newkey), generate in rules:
  15. d = reduce(lambda d, k: d.setdefault(k, OrderedDict()), keys, result)
  16. d[newkey] = generate()
  17.  
  18. import sys
  19. json.dump(result, sys.stdout, indent=4, ensure_ascii=False)
Success #stdin #stdout 0.05s 12184KB
stdin
Standard input is empty
stdout
{
    "B": {
        "K1": 5,
        "K2": 2
    },
    "A": {
        "K3": "QWERTY"
    }
}