如何在Python中保留前4个键并对JSON/Dict其余按键排序?
实现方法:固定前置键+剩余按键字母排序
可以用Python直接实现这个需求,核心逻辑是先保留指定的固定键,再将剩余按键按字母顺序排序后拼接:
- 提取
top、left、width、height四个固定键,严格按要求的顺序保留 - 筛选字典中除固定键外的所有按键,按字母顺序排序
- 重新构建新字典,先放入固定键,再依次加入排序后的剩余按键
代码示例
original_dict = { "top": 590, "left": 105, "width": 240, "height": 40, "Zarya": "142612a11ad2ca629d2182a51b23d1f2", "Kiriko": "4d0528271fd9d0104cd2af0b1c91f4f6", "Echo": "175b9c62c57b0d6e18577f352fad4afc", "Sojourn": "8ea40548f4472457cfbd46731958a432", "Sombra": "319e88daf8a4b53869c6690cd008ebb0", "Genji": "b5a7156b9a1921099a884e62f2f7c774", "Reaper": "309527687ec1e89f63cfece162c57a66", "Ana": "556e9f3ff210729dc9e1cf848c3c579f", "Hanzo": "13d164a4f37fd7562b53ede9f5fd2671", "Lucio": "d772ddc7e982cd6d714d0a19753c8b32", "Torbjorn": "4fdf46b32b3435c714da7a75ba0ccde2", "Junkrat": "be29c9729daf9e46606ffa26638641ea", "Moira": "0b54634e09e4d108ca248e4e967d15a1", "Mei": "90391ff04b11c73e49c48f9b2738d1b0", "Dva": "859012ee744e79a630522190ef8ef92c", "Soldier 76": "adbd70e889fe6135f372dbd28b7ae5e6", "Winston": "1c4245a79b45f1a0b90e78383078cdd3", "Tracer": "b5465050c403b020aac35da073d4ab11", "Zenyatta": "dccc24bfe5d7b09df7b1387d4c8dfba7", "Baptiste": "4d254bc437560ac21780732fc78ffa08", "Sigma": "3c85376aee36a901bcbf24b07cf60aa2", "Widowmaker": "049092cbd628a54ed22ae5522ca5681c", "Orisa": "113acca96744081964854bd94191310a", "Ashe": "48ca311fb1b288bb811965e6d84d1786" } # 定义固定顺序的前置键 fixed_keys = ["top", "left", "width", "height"] # 提取剩余按键并按字母排序 sorted_remaining_keys = sorted([k for k in original_dict if k not in fixed_keys]) # 构建新字典 sorted_dict = {} # 先添加固定键 for key in fixed_keys: sorted_dict[key] = original_dict[key] # 再添加排序后的剩余键 for key in sorted_remaining_keys: sorted_dict[key] = original_dict[key] # 输出格式化后的结果 import json print(json.dumps(sorted_dict, indent=4))
最终输出效果
运行代码后,生成的字典会先保留top、left、width、height的顺序,后续英雄按键按A-Z字母顺序排列:
{ "top": 590, "left": 105, "width": 240, "height": 40, "Ana": "556e9f3ff210729dc9e1cf848c3c579f", "Ashe": "48ca311fb1b288bb811965e6d84d1786", "Baptiste": "4d254bc437560ac21780732fc78ffa08", "Dva": "859012ee744e79a630522190ef8ef92c", "Echo": "175b9c62c57b0d6e18577f352fad4afc", "Genji": "b5a7156b9a1921099a884e62f2f7c774", "Hanzo": "13d164a4f37fd7562b53ede9f5fd2671", "Junkrat": "be29c9729daf9e46606ffa26638641ea", "Kiriko": "4d0528271fd9d0104cd2af0b1c91f4f6", "Lucio": "d772ddc7e982cd6d714d0a19753c8b32", "Mei": "90391ff04b11c73e49c48f9b2738d1b0", "Moira": "0b54634e09e4d108ca248e4e967d15a1", "Orisa": "113acca96744081964854bd94191310a", "Reaper": "309527687ec1e89f63cfece162c57a66", "Sigma": "3c85376aee36a901bcbf24b07cf60aa2", "Soldier 76": "adbd70e889fe6135f372dbd28b7ae5e6", "Sojourn": "8ea40548f4472457cfbd46731958a432", "Sombra": "319e88daf8a4b53869c6690cd008ebb0", "Torbjorn": "4fdf46b32b3435c714da7a75ba0ccde2", "Tracer": "b5465050c403b020aac35da073d4ab11", "Winston": "1c4245a79b45f1a0b90e78383078cdd3", "Widowmaker": "049092cbd628a54ed22ae5522ca5681c", "Zarya": "142612a11ad2ca629d2182a51b23d1f2", "Zenyatta": "dccc24bfe5d7b09df7b1387d4c8dfba7" }
内容的提问来源于stack exchange,提问作者NFeruch - FreePalestine
相关产品推荐
相关产品推荐

