Python实现字典翻转输出指定格式及defaultdict使用异常问题求解
问题定位
- 遍历逻辑错误:直接遍历字典
s默认仅返回键对象,无法同时解包为键、值两个变量,运行时会直接抛出ValueError,需调用.items()方法获取完整键值对 - 映射关系颠倒:需求是将原字典的*城市(值)*作为新字典的键,*人名(键)*作为新字典的值,原代码
d[k].append(v)逻辑完全相反 - 排序代码冗余:
sorted(d.items())仅返回排序后的新列表,不会修改原字典d,且需求无排序要求,该行无实际作用 - 未适配输出格式要求:需求中仅对应1个人的城市,值需为字符串而非列表,原逻辑生成的所有值均为列表,不符合输出要求
正确实现代码
from collections import defaultdict s = {"Ram": "Chennai", "Laxman": "Mumbai", "stephen": "Chennai"} temp = defaultdict(list) # 完成城市到人名的反向映射 for name, city in s.items(): temp[city].append(name) # 处理单人名场景,转为字符串格式 res = {} for city, name_list in temp.items(): res[city] = name_list[0] if len(name_list) == 1 else name_list print(res)
运行后输出结果和要求完全一致:{"Chennai": ["Ram", "stephen"], "Mumbai": "Laxman"}
内容的提问来源于stack exchange,提问作者Hemu
相关产品推荐
相关产品推荐

