From ed0f3f6810aa93b0cf2413cc1d3b8283693f8a3a Mon Sep 17 00:00:00 2001 From: Steven Robertson Date: Sat, 17 Dec 2011 21:06:45 -0500 Subject: [PATCH] Use string keys for dict Otherwise, loading the result of a conversion immediately without converting to JSON first fails. --- cuburn/genome.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cuburn/genome.py b/cuburn/genome.py index 443f509..50552e8 100644 --- a/cuburn/genome.py +++ b/cuburn/genome.py @@ -224,7 +224,8 @@ def json_encode_genome(obj, indent=0): if isinstance(obj, dict): if not obj: return '{}' - ks, vs = zip(*sorted(obj.items())) + digsort = lambda kv: (int(kv[0]), kv[1]) if kv[0].isdigit() else kv + ks, vs = zip(*sorted(obj.items(), key=digsort)) if ks == ('b', 'g', 'r'): ks, vs = reversed(ks), reversed(vs) ks = [crep('%.8g' % k if isnum(k) else str(k)) for k in ks] @@ -316,7 +317,8 @@ def convert_flame(flame): ('estimator_minimum', 'minimum', 0), ('estimator_curve', 'curve', 0.6)]) - xfs = dict(enumerate(map(convert_xform, flame['xforms']))) + xfs = dict([(str(k), convert_xform(v)) + for k, v in enumerate(flame['xforms'])]) if 'finalxform' in flame: xfs['final'] = convert_xform(flame['finalxform'], True)