如何修正Python字典值按字母排序的代码问题(禁用lambda)
如何修正Python字典值排序的代码?
我刚开始学习Python字典,现有任务要求将字典的值按字母顺序排序。我编写了如下代码:
def sort_dictionary(dic: dict) -> dict: for i, j in dic.items(): sorted_dict = {i: sorted(j)} print(sorted_dict)
调用print(sort_dictionary({"b":["d", "a"], "a":["c", "f"]}))时,期望得到{"b":["a", "d"], "a":["c", "f"]},但当前代码输出两个单独的字典:
{'b': ['a', 'd']} {'a': ['c', 'f']}
请问该如何修正这段代码?请尽量不要使用lambda,我还未学习该知识点。
问题分析
你的代码存在两个核心问题:
- 每次循环都会重新创建
sorted_dict变量,覆盖之前的内容,导致只能保存当前遍历到的单个键值对 - 函数没有返回最终的完整字典,而是在循环里直接打印单个键值对,调用
print(sort_dictionary(...))时还会额外输出None(因为函数默认返回None)
修正方案
我们可以先初始化一个空字典存储结果,遍历原字典时将每个排序后的键值对添加进去,最后返回这个完整的字典:
def sort_dictionary(dic: dict) -> dict: sorted_dict = {} # 创建空字典用于存放最终结果 for key, value in dic.items(): # 对当前值列表排序后,存入结果字典 sorted_dict[key] = sorted(value) return sorted_dict # 返回完整的排序后字典
测试验证
调用print(sort_dictionary({"b":["d", "a"], "a":["c", "f"]})),会输出符合预期的结果:
{'b': ['a', 'd'], 'a': ['c', 'f']}
内容的提问来源于stack exchange,提问作者QLimbo
相关产品推荐
相关产品推荐

