如何对嵌套字典的键进行数值排序?示例需求解析
解决嵌套字典按键排序的问题
嘿,这个需求很好实现,核心就是对嵌套字典的每一层键进行排序后重新构建字典就行~
首先,先明确你的原始字典:
original_dict = {'even': {'1': 'odd', '0': 'even'}, 'odd': {'1': 'even', '0': 'odd'}}
实现方法
因为Python 3.7及以上版本的字典会保留插入顺序,所以我们可以通过字典推导式,结合sorted()函数来完成排序:
# 对内层字典按键排序(转换为整数确保数字顺序) sorted_dict = { outer_key: dict(sorted(inner_dict.items(), key=lambda x: int(x[0]))) for outer_key, inner_dict in original_dict.items() }
代码解释
sorted(inner_dict.items(), key=lambda x: int(x[0])):把内层字典的键值对转换成可迭代的元组列表,然后按照键的数值大小排序(因为你的键是字符串类型的数字,转成int排序更通用,比如遇到'10'、'2'这类也能正确排序);dict(...):把排序后的元组列表重新转换成字典;- 外层的字典推导式则遍历原字典的所有外层键值对,将处理后的内层字典重新组合。
验证结果
运行代码后打印sorted_dict,就能得到你想要的结果:
print(sorted_dict) # 输出: {'even': {'0': 'even', '1': 'odd'}, 'odd': {'0': 'odd', '1': 'even'}}
可选:外层键也排序
如果你的外层字典还有更多键,需要同时对外层键排序的话,可以在外层遍历的时候也加上sorted():
sorted_dict = { outer_key: dict(sorted(inner_dict.items(), key=lambda x: int(x[0]))) for outer_key, inner_dict in sorted(original_dict.items()) }
内容的提问来源于stack exchange,提问作者Alex Hu
相关产品推荐
相关产品推荐

