Python中如何去除单值列表输出的方括号仅保留实际内容
根因说明
- 原有代码的单元素分支存在两处可优化的问题:
- 写法冗余:循环已经通过解包拿到了当前用户对应的语言列表
languages,分支内又重复通过字典键favorite_languages[name]重新查询取值,属于不必要的操作。 - 输出错误:直接将整个语言列表通过
str()强制转为字符串输出,Python在转换列表对象为字符串时,会完整保留列表的语法结构符号,因此单元素列表最终输出时会连带出现方括号、引号等不属于语言名称本身的内容。
- 写法冗余:循环已经通过解包拿到了当前用户对应的语言列表
修正代码
favorite_languages = { 'jen' : ['python','ruby'], 'sarah' : ['c'], 'edward' : ['ruby','go'], 'phil' : ['python','haskell'], } for name,languages in favorite_languages.items(): if len(languages) > 1: print("\n" + name.title() + "'s favorite languages are:") for language in languages: print("\t" + language.title() ) else: # 直接提取列表内的单元素,不再对整个列表做字符串转换 single_lang = languages[0].title() print("\n" + name.title() + "'s favorite language is: " + single_lang)
运行效果
- 多语言用户(jen、edward、phil)的输出逻辑和原有预期完全匹配,逐行缩进展示全部喜爱的语言。
- 单语言用户(sarah)的输出不再附带列表方括号、引号等多余符号,直接展示规范格式的纯语言名称C。
内容的提问来源于stack exchange,提问作者Bilal Hassan
相关产品推荐
相关产品推荐

