You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python函数中返回并格式化输出多值字典?

问题分析

你之前的问题出在把格式化用的换行符直接存在了字典的键里,这不仅改变了字典的实际数据(键变成了带\n的字符串),还达不到预期的输出格式效果。正确的思路应该是:保持字典数据本身的纯净,只在打印输出时处理格式化样式。

解决方案

这里提供两种简单有效的方法来实现你想要的格式化输出:


方法1:使用json.dumps(推荐,简单通用)

Python的json模块自带格式化输出的功能,可以轻松控制缩进、分隔符等样式,而且能处理各种复杂数据类型。

修改后的完整代码:

import csv
import json

def read_dictionary():
    with open("text.tsv") as tsvfile:
        tsvreader = csv.reader(tsvfile, delimiter="\t")
        d = {}
        for line in tsvreader:
            # 直接用第一列作为键,剩余列作为值列表,不要添加换行符
            key = line[0]
            values = line[1:]
            d[key] = values
    return d

if __name__ == "__main__":
    result_dict = read_dictionary()
    # 用json.dumps格式化输出:indent=2表示缩进2空格,separators调整分隔符样式
    print(json.dumps(result_dict, indent=2, separators=(",", ": ")))

输出效果:

{
  "string1": ["a", "b", "c"],
  "string2": ["d", "e", "f"],
  "string3": ["g", "h", "i"],
  "string4": ["j", "k", "l"]
}

方法2:手动构建格式化字符串(灵活自定义)

如果你不想依赖json模块,可以手动拼接字符串来实现完全自定义的格式:

import csv

def read_dictionary():
    with open("text.tsv") as tsvfile:
        tsvreader = csv.reader(tsvfile, delimiter="\t")
        d = {}
        for line in tsvreader:
            key = line[0]
            values = line[1:]
            d[key] = values
    return d

if __name__ == "__main__":
    result_dict = read_dictionary()
    # 遍历字典生成每个键值对的字符串
    formatted_items = [f'  "{key}": {value}' for key, value in result_dict.items()]
    # 拼接成最终的格式化字符串
    formatted_dict = "{\n" + ",\n".join(formatted_items) + "\n}"
    print(formatted_dict)

输出效果和方法1一致,而且你可以根据需求调整缩进、引号、分隔符等细节。

关键注意点

  • 永远不要把**格式化符号(比如\n、空格)**混入字典的键或值中,这会污染原始数据,导致后续使用字典时出现问题。
  • 数据存储和输出展示是两个独立的环节,应该分开处理:字典负责存储纯净的键值对,打印时再根据需求添加格式。

内容的提问来源于stack exchange,提问作者Miggl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:12:46