Python 3.x Python 3.7中的嵌套字典(或集合)的自定义顺序

Python 3.x Python 3.7中的嵌套字典(或集合)的自定义顺序,python-3.x,dictionary,set,Python 3.x,Dictionary,Set,我收到AWS提供的以下套件: { 'AWS/EC2': {'CPUCreditBalance','NetworkOut','StatusCheckFailed_System','NetworkPacketsOut','NetworkPacketsIn','CPUSurplusCreditBalance','CPUUtilization','CPUSurplusCreditsCharged','StatusCheckFailed','DiskReadOps','DiskWriteOps','Di

我收到AWS提供的以下套件:

{
'AWS/EC2': 
{'CPUCreditBalance','NetworkOut','StatusCheckFailed_System','NetworkPacketsOut','NetworkPacketsIn','CPUSurplusCreditBalance','CPUUtilization','CPUSurplusCreditsCharged','StatusCheckFailed','DiskReadOps','DiskWriteOps','DiskWriteBytes','DiskReadBytes','StatusCheckFailed_Instance','CPUCreditUsage', 'NetworkIn'}, 
'System/Windows': {
'MemoryUtilization', 'Paging File % Usage', 'LogicalDisk % Free Space'
}
}
我需要能够自定义设置“AWS/EC2”中的键,以便它们始终按此顺序排列: keyorder=['StatusCheckFailed'、'CPUUUtilization'、'DiskReadOps'、'DiskWriteOps'、'NetworkIn']

我一辈子都不知道如何指定顺序,以便在为Cloudwatch仪表板编写JSON时,许多仪表板上的值始终位于同一位置

样本输出:

{
   "widgets":[
      {
         "type":"metric",
         "x":0,
         "y":9,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "NetworkPacketsOut",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "NetworkPacketsOut",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "NetworkPacketsOut",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":6,
         "y":9,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "NetworkPacketsIn",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "NetworkPacketsIn",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "NetworkPacketsIn",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":12,
         "y":9,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "DiskReadOps",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "DiskReadOps",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "DiskReadOps",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":18,
         "y":9,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "DiskReadBytes",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "DiskReadBytes",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "DiskReadBytes",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":0,
         "y":10,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "StatusCheckFailed_Instance",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "StatusCheckFailed_Instance",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "StatusCheckFailed_Instance",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":6,
         "y":10,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "DiskWriteBytes",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "DiskWriteBytes",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "DiskWriteBytes",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":12,
         "y":10,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "CPUUtilization",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "CPUUtilization",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "CPUUtilization",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":18,
         "y":10,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "DiskWriteOps",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "DiskWriteOps",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "DiskWriteOps",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":0,
         "y":11,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "StatusCheckFailed_System",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "StatusCheckFailed_System",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "StatusCheckFailed_System",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":6,
         "y":11,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "StatusCheckFailed",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "StatusCheckFailed",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "StatusCheckFailed",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":12,
         "y":11,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "NetworkOut",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "NetworkOut",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "NetworkOut",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":18,
         "y":11,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "AWS/EC2",
                  "NetworkIn",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "NetworkIn",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "AWS/EC2",
                  "NetworkIn",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":0,
         "y":12,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "System/Windows",
                  "Paging File % Usage",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "System/Windows",
                  "Paging File % Usage",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "System/Windows",
                  "Paging File % Usage",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":6,
         "y":12,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "System/Windows",
                  "MemoryUtilization",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "System/Windows",
                  "MemoryUtilization",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "System/Windows",
                  "MemoryUtilization",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      },
      {
         "type":"metric",
         "x":12,
         "y":12,
         "width":6,
         "height":6,
         "properties":{
            "view":"timeSeries",
            "stacked":false,
            "metrics":[
               [
                  "System/Windows",
                  "LogicalDisk % Free Space",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "System/Windows",
                  "LogicalDisk % Free Space",
                  "InstanceId",
                  "i-XXXXXX"
               ],
               [
                  "System/Windows",
                  "LogicalDisk % Free Space",
                  "InstanceId",
                  "i-XXXXXX"
               ]
            ],
            "region":"us-west-2"
         }
      }
   ]
}

不要使用口述。根据定义,口述没有顺序。如果顺序对你来说真的很重要,使用列表

{
   'a': 1,
   'b': 2,
   'c': 3
}
如果订单重要,则应改为:

[
   ['a', 1],
   ['b', 2],
   ['c', 3]
]
或者,清洁剂:

[
   {key: 'a', value: 1},
   {key: 'b', value: 2},
   {key: 'c', value: 3}
]
编辑:Python 3.6+字典似乎是根据插入顺序排序的。
此外,使用OrderedDict可能会解决您的问题。

Python3.5及更高版本中,字典的插入/声明顺序相同。