Fedour
Fedour

Reputation: 387

Sort keys in a dictionary Python

I have a Json file like this:

{
  "wasGeneratedBy": {
    "_:wGB3": {
      "prov:entity": "ivo://stsci/DSS-digitized-J.444",
      "prov:activity": "stcsiNum-1b"
    },
    "_:wGB1": {
      "prov:entity": "ivo://stsci/DSS-digitized-J.444-cutouts",
      "prov:activity": "cds_cutout444"
    },
    "_:wGB2": {
      "prov:entity": "ivo://stsci/DSS-digitized-I.444",
      "prov:activity": "stcsiNum-1a"
    }
  },
  "activity": {
    "stcsiNum-1a": {},

  },
  "used": {
    "_:u6": {
      "prov:entity": "ivo://stsci/DSS-Plate-R.444",
      "prov:activity": "stcsiNum-1c"
    },
    "_:u2": {
      "prov:entity": "ivo://stsci/DSS-Plate-I.444",
      "prov:activity": "stcsiNum-1a"
    },
    "_:u3": {
      "prov:entity": "ivo://stsci/DSS-digitized-J.444",
      "prov:activity": "cds_cutout444"

  },
  "entity": {
    "ivo://stsci/DSS-digitized-R.444": {},
    "ivo://stsci/DSS-digitized-J.444-cutouts": {},
    "ivo://stsci/DSS-Plate-R.444": {},
  }
}

But I want to sort all the keys ("wasGenereratedBy","activiy"...) in a specific order like this ("activity","entity","used","wasGeneratedBy")

I have declared this:

my_own_order = ['entity', 'used', 'activity','wasGeneratedBy']

And I have try this, but doesn't work:

print sorted(fileName,order=my_own_order)

Any suggestions ? Thanks you

Upvotes: 0

Views: 52

Answers (1)

Netwave
Netwave

Reputation: 42678

Use OrderedDict:

from collections import OrderedDict

print OrderedDict((k,mydict[k] for k in  my_own_order))

Upvotes: 5

Related Questions