Python 3.x Python 3.7中的嵌套字典(或集合)的自定义顺序
我收到AWS提供的以下套件: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/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及更高版本中,字典的插入/声明顺序相同。