Use string keys for dict

Otherwise, loading the result of a conversion immediately without
converting to JSON first fails.
This commit is contained in:
Steven Robertson 2011-12-17 21:06:45 -05:00
parent 201f5b0963
commit ed0f3f6810

View File

@ -224,7 +224,8 @@ def json_encode_genome(obj, indent=0):
if isinstance(obj, dict): if isinstance(obj, dict):
if not obj: if not obj:
return '{}' 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'): if ks == ('b', 'g', 'r'):
ks, vs = reversed(ks), reversed(vs) ks, vs = reversed(ks), reversed(vs)
ks = [crep('%.8g' % k if isnum(k) else str(k)) for k in ks] 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_minimum', 'minimum', 0),
('estimator_curve', 'curve', 0.6)]) ('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: if 'finalxform' in flame:
xfs['final'] = convert_xform(flame['finalxform'], True) xfs['final'] = convert_xform(flame['finalxform'], True)