如何在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
相关产品推荐
相关产品推荐

