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

如何在Python中不使用双层for循环打印指定格式的字典内容?

解决方案

方法1:直接操作原字典(无需双层循环)

利用字符串的join()方法替代内层循环,直接将课程列表转为逗号分隔的字符串,再拼接学科名称:

courses = {
    "Computer Science": [
        "Introduction to Programming",
        "Data Structures and Algorithms",
        "Operating Systems",
    ],
    "Mathematics": [
        "Calculus I",
        "Linear Algebra",
        "Differential Equations",
    ],
    "History": [
        "World History I",
        "World History II",
        "US History",
    ],
}

# 生成完整输出字符串后打印,避免末尾多余空行
output = '\n\n'.join([f"{dept}: {', '.join(cls_list)}" for dept, cls_list in courses.items()])
print(output)

方法2:基于DataFrame实现

假设你已经将字典转为如下结构的DataFrame(学科为索引,课程列表为一列):

import pandas as pd
df = pd.DataFrame.from_dict(courses, orient='index', columns=['Courses'])

可以用以下两种方式实现:

方式A:apply + lambda

output = '\n\n'.join(df.apply(lambda row: f"{row.name}: {', '.join(row['Courses'])}", axis=1))
print(output)

这里指定axis=1是让lambda作用于每一行,row.name获取学科索引,row['Courses']获取课程列表。

方式B:itertuples()遍历

lines = []
for row in df.itertuples():
    lines.append(f"{row.Index}: {', '.join(row.Courses)}")
print('\n\n'.join(lines))

关于lambda失败的可能原因

你之前尝试lambda没成功,大概率是没指定axis=1(默认作用于列而非行),或者没有正确获取DataFrame的索引(学科名称)和课程列的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:55:05