python - Sorting multiple dictionary dimensions at once -


i have dictionary of following form:

{     "b":{           "ba": {                  "score":3,                  "n":500                 },           "aa": {                  "score": 10,                  "n":300                 },         },     "a":{          "xy": {                  "score":199,                  "n":7                },          "zz": {                  "score":222,                  "n":55                },          } } 

i want first dimension sorted alphabetically, second sorted score, such when sorted like:

{     "a":{          "zz": {                  "score":222,                  "n":55                },          "xy": {                  "score":199,                  "n":7                }          },     "b":{           "aa": {                  "score": 10,                  "n":300                 },           "ba": {                  "score":3,                  "n":500                 }         } } 

i have searched answer while, have found how sort single dimension in dictionary. best pythonic way go doing this?

after sorting need dump file planning on using json module for. doing like:

with open("out.json", 'w') fp:     json.dump(my_dict, fp, sort_keys=true, indent=4) 

you can create appropriate ordereddict using eg:

ordered = ordereddict(     [(k, ordereddict(         sorted(v.items(), key=lambda pair: -pair[1]["score"])))       k, v in sorted(data.items())]) 

now dump json

>>> print(json.dumps(ordered, indent=2)) {   "a": {     "zz": {       "score": 222,        "n": 55     },      "xy": {       "score": 199,        "n": 7     }   },    "b": {     "aa": {       "score": 10,        "n": 300     },      "ba": {       "score": 3,        "n": 500     }   } } 

note: use reverse=true inside inner sort instead of negating score, depends how feel ...


Comments

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -