如何打印Python字典使其条目以带引号的圆括号形式输出
代码调整实现
- 核心调整字典值的存储方式
原代码将作者、书名拼接为普通文本字符串存储,是输出没有格式包裹的根本原因。不需要手动拼接引号、括号,直接将两个字段组装为Python元组作为值存储即可——Python原生对元组的字符串表示,会自动按照“元素用单引号包裹、整体用圆括号包裹”的规则渲染,完全匹配目标输出要求。
需要把原代码中的赋值逻辑从isbn_dic[isbn] = author + ", " + title,修改为isbn_dic[isbn] = (author, title)。 - 优化字段拆分的健壮性
原拆分逻辑遇到原文本中逗号后带空格的场景,会导致拆出的作者、书名携带多余首尾空格。可以把解包逻辑调整为对拆分后的每个字段做去空格处理:author, title, isbn = [field.strip() for field in line.strip().split(',')],避免输出出现多余空白字符。 - 调整输出为逐行打印模式
原代码直接print(isbn_dic)会把所有字典条目压缩在一行输出,和目标逐行展示的效果不符。需要在字典构建完成后,遍历键值对逐行输出:
因为值是元组,直接嵌入字符串渲染就会自动生成要求的格式效果。for isbn, value in isbn_dic.items(): print(f"{isbn}: {value}")
注意:不推荐手动拼接带引号、括号的字符串实现效果,一旦作者名或书名本身包含单引号,会直接打乱输出格式。使用元组的原生渲染机制是最稳定的实现方式。
调整后的完整参考代码
def isbn_dictionary(filename): isbn_dic = {} # 用上下文管理器打开文件,避免文件句柄泄漏 with open(filename, "r", encoding="utf-8") as f: for line in f: if not line.strip(): continue # 拆分字段并逐字段去除首尾空格 author, title, isbn = [field.strip() for field in line.strip().split(',')] # 存储为元组而非拼接字符串 isbn_dic[isbn] = (author, title) # 逐行输出匹配格式 for isbn, value in isbn_dic.items(): print(f"{isbn}: {value}") return isbn_dic
效果验证
当字典存储了对应条目时,逐行输出的结果完全匹配预期:
I1: ('A1', 'T1') I2: ('A2', 'T2') I3: ('A3', 'T3')
内容的提问来源于stack exchange,提问作者Eliott Reed
相关产品推荐
相关产品推荐

