Python如何对嵌套字典内的指定列表排序且不影响其他结构
问题解答
可以实现,该操作只会修改指定EQ01列表的内部元素顺序,完全不会改动字典其他部分的结构、键顺序以及其他值的内容。
Python 3.7及以上版本原生支持字典保留插入顺序,只要你不对字典的键做全局排序、不重新生成父级字典对象,仅修改指定嵌套路径下的列表内容,不会影响其他结构。
操作示例
模拟目标字典结构
# 你所持有的嵌套字典结构示例 data = { "model": { "blah": [{}], "loop_2110C": [ { "EQ": { "EQ01": ["30","47","AG","42","AD","AF","BF","BG","14","45","10"] }, "blah": "其他原有内容" } ] # 其余原有键值对顺序完全保留 } }
对目标列表排序
你只需要精准定位到EQ01列表的嵌套路径,直接调用排序方法即可:
# 定位到目标列表,原地升序排序,不会修改字典其他部分 data["model"]["loop_2110C"][0]["EQ"]["EQ01"].sort()
如果需要自定义排序规则,比如数字按数值排序在前、字母按字符顺序排序在后,可以自定义排序key:
target_list = data["model"]["loop_2110C"][0]["EQ"]["EQ01"] # 自定义排序规则:数字在前按数值升序,字母在后按字符序升序 target_list.sort(key=lambda x: (0, int(x)) if x.isdigit() else (1, x))
如果不想改动原始字典,可以先做深拷贝后再操作:
import copy # 深拷贝生成独立的新字典,不会影响原数据 new_data = copy.deepcopy(data) new_data["model"]["loop_2110C"][0]["EQ"]["EQ01"].sort()
内容的提问来源于stack exchange,提问作者Craig Larson
相关产品推荐
相关产品推荐

