Python字典迭代时如何去除Betty对应的冗余地点提示输出
问题根源
原代码的判断逻辑存在两处核心问题:
- 用
len(str(v)) > 1判断是否为多地点场景逻辑完全失效:Betty对应的存储值是字符串类型的单地点"Bahrein",转成字符串后长度为7,满足>1的条件,错误触发了多地点提示的打印,出现冗余行。 - 对字符串类型的地点值直接做遍历操作,会把字符串拆成单个字符循环,进一步触发了原本为单字符串场景写的异常打印分支。
修改方案
直接通过值的类型做分支判断:多地点场景对应列表类型,单地点场景对应字符串类型,替换掉原本失效的长度判断逻辑,同时修正单地点提示的语法错误。
修改后完整代码
Favorite_Places = { "Jeff": ["Chicago","Berlin","Munchen"], "Kai": ["New York", "Washington"], "Sally": ["Texas", "Dublin"], "Betty": "Bahrein" } for k, v in Favorite_Places.items(): # 列表类型为多地点场景 if isinstance(v, list): print(f"{k}'s favourite places are") for place in v: print(place) # 其余类型(此处为字符串)为单地点场景 else: print(f"{k}'s favourite place is {v}")
修改后运行输出
冗余提示行已被移除,最终输出如下:
Jeff's favourite places are Chicago Berlin Munchen Kai's favourite places are New York Washington Sally's favourite places are Texas Dublin Betty's favourite place is Bahrein
内容的提问来源于stack exchange,提问作者RAGNODIN
相关产品推荐
相关产品推荐

