python - Python,解析 JSON-order by/sort by
问题描述
我有这个 JSON 数据:
"InstanceProfileList": [
{
"InstanceProfileId": "AIPAI6ZC646GGONRADRSK",
"Roles": [
{
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"ec2.amazonaws.com",
"ssm.amazonaws.com"
]
}
}
]
},
"RoleId": "AROAJMI3DEQ4AW5JJMFII",
"CreateDate": "2018-03-23T15:23:28Z",
"RoleName": "ec2ssmMaintWindow",
"Path": "/",
"Arn": "arn:aws:iam::279052847476:role/ec2ssmMaintWindow"
}
]
我使用下面的代码来解析它:
def get_user_group_service(element):
s = ''
for e in element['AssumeRolePolicyDocument']['Statement']:
p = e['Principal']
if 'Federated' in p:
s += p['Federated']
if 'Service' in p:
obj = p['Service']
if type(obj) is str:
s += obj # element is string
else:
s += ''.join(obj) # element is array of strings
if 'AWS' in p:
s += p['AWS']
return s
现在,问题是有时Service
元素包含:
ec2.amazonaws.com ssm.amazonaws.com
而有时:
ssm.amazonaws.com ec2.amazonaws.com
每次的顺序都不一样。
它的显示顺序并不重要,我只需要输出保持一致。有没有办法按字母顺序排列这个输出?
我用谷歌搜索它,它似乎obj.sort()
会修复它,但不知道如何应用它。
解决方案
据我了解,您想要一个以空格分隔的排序字符串。这是我的方法。
x = 'ec2ssmMaintWindow,AmazonSSMMaintenanceWindowRole,ec2.amazonaws.com ssm.amazonaws.com'
sorted_only_space_sparated = [ ' '.join( z for z in sorted(y.split(' '), reverse=True)) for y in x.split(',')]
print(','.join(str(i) for i in sorted_only_space_sparated))
输出:
ec2ssmMaintWindow,AmazonSSMMaintenanceWindowRole,ssm.amazonaws.com ec2.amazonaws.com
让我知道它是否有帮助。
推荐阅读
- excel - VBA 编辑器行为:打开新文件时的新窗口
- python - 将列表中的字母字符串转换为数字
- r - 如何从单个字符串中提取会话话语
- java - H2:更改现有表的架构
- javascript - 为什么“日期”不附加到?
- postgresql - postgres 将不同的表列从多对一连接数据求和
- node.js - 查找后如何获取匹配的数据
- javascript - 我想动态加载到入口点的 Webpack 捆绑模块
- postgresql - 如何声明一个 while 循环,直到成功完成 PL/PGSQL 中的 fetch 语句
- python-3.x - Pandas 使用过滤器按月计算唯一出现次数