Python 生成以JSON作为输入的已排序嵌套字典
这是有效载荷Python 生成以JSON作为输入的已排序嵌套字典,python,json,Python,Json,这是有效载荷 payload = ''' { "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": [ { "ID": "ABCD", "SortAs": "SGML",
payload = '''
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": [
{
"ID": "ABCD",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
},
{
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
},
{
"ID": "PQRS",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
},
{
"ID": "ABRA",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
]
}
}
}
'''
将上面的这个json字符串作为输入并打印输出json,其中GlossList被排序(按ID排序)首先,您提供的json无效。我已经编辑了你的答案,提供了一个有效的答案 回答你的问题:
ast.literal\u eval()
将字符串转换为字典李>
sorted
函数,如果是这样,则必须构建原始词典,但这次是排序的
2.2排序
方法排序
功能
payload = ast.literal_eval(json_string)
sub_order_dict = sorted(payload["glossary"]["GlossDiv"]["GlossList"], key=lambda x: x["ID"])
d = {'glossary': {'title': 'example glossary',
'GlossDiv': {'title': 'S',
'GlossList': sub_order_dit}}}
应用排序
方法
payload = ast.literal_eval(json_string)
payload["glossary"]["GlossDiv"]["GlossList"].sort(key=lambda x: x["ID"])
对于这两种情况,有效载荷的输出为:
{'glossary': {'title': 'example glossary',
'GlossDiv': {'title': 'S',
'GlossList': [{'ID': 'ABCD',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'},
{'ID': 'ABRA',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'},
{'ID': 'PQRS',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'},
{'ID': 'SGML',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'}]}}}
print( sorted(payload["glossary"]["GlossDiv"]["GlossList"], key=lambda x: x["ID"]) )
[{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'ABCD',
'SortAs': 'SGML'},
{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'ABRA',
'SortAs': 'SGML'},
{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'PQRS',
'SortAs': 'SGML'},
{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'SGML',
'SortAs': 'SGML'}]
如果您只需要
GlossList
排序,请尝试在键中使用sorted
和lambda
Ex:
{'glossary': {'title': 'example glossary',
'GlossDiv': {'title': 'S',
'GlossList': [{'ID': 'ABCD',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'},
{'ID': 'ABRA',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'},
{'ID': 'PQRS',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'},
{'ID': 'SGML',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'}]}}}
print( sorted(payload["glossary"]["GlossDiv"]["GlossList"], key=lambda x: x["ID"]) )
[{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'ABCD',
'SortAs': 'SGML'},
{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'ABRA',
'SortAs': 'SGML'},
{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'PQRS',
'SortAs': 'SGML'},
{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'SGML',
'SortAs': 'SGML'}]
输出:
{'glossary': {'title': 'example glossary',
'GlossDiv': {'title': 'S',
'GlossList': [{'ID': 'ABCD',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'},
{'ID': 'ABRA',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'},
{'ID': 'PQRS',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'},
{'ID': 'SGML',
'SortAs': 'SGML',
'GlossTerm': 'Standard Generalized Markup Language',
'Acronym': 'SGML',
'Abbrev': 'ISO 8879:1986',
'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.',
'GlossSeeAlso': ['GML', 'XML']},
'GlossSee': 'markup'}]}}}
print( sorted(payload["glossary"]["GlossDiv"]["GlossList"], key=lambda x: x["ID"]) )
[{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'ABCD',
'SortAs': 'SGML'},
{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'ABRA',
'SortAs': 'SGML'},
{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'PQRS',
'SortAs': 'SGML'},
{'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {'GlossSeeAlso': ['GML', 'XML'],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'SGML',
'SortAs': 'SGML'}]
输出
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": [
{
"ID": "ABCD",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": [
"GML",
"XML"
]
},
"GlossSee": "markup"
},
{
"ID": "ABRA",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": [
"GML",
"XML"
]
},
"GlossSee": "markup"
},
{
"ID": "PQRS",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": [
"GML",
"XML"
]
},
"GlossSee": "markup"
},
{
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": [
"GML",
"XML"
]
},
"GlossSee": "markup"
}
]
}
}
}
嘿,这不是正确的json。你能给出确切的数字吗string@Rhaman,正如InAFlash所说,您提供的JSON
不正确。您是否介意确保您提供了一个有效的JSON
。可能与您迄今为止努力实现的目标重复?请参阅@InAFlash,我获取了提供的字符串,并使用JSON验证器进行了验证,问题似乎出在“glossee”:“markup”}、
中,,
应该注意。