如何使用Python的map函数处理列表中的字典以运行自定义函数
问题解决:批量生成学生证文本的map函数用法修正
原代码的两个核心错误:
map函数用法完全错误:map(card, **data)不符合语法逻辑,**用于解包字典作为函数关键字参数,但map的第二个参数是可迭代对象,不能直接对列表用**解包。- 数据字典存在笔误:第二个字典的键写成了
'F_Name:'(多了个冒号),会导致调用card函数时缺失F_Name参数。
修正后的完整代码:
def card(Name, F_Name, Roll_No, Program): x = f''' University Name Name: {Name} Father Name: {F_Name} Roll No: {Roll_No} Program: {Program} ''' return x # 修正第二个字典的键名错误 data = [ {'Name':'Student1','F_Name':"student's 1 father",'Roll_No':'123','Program':'BSCS'}, {'Name':'student2','F_Name':"student's 2 father",'Roll_No':'456','Program':'BSCS'}, {'Name':'student3','F_Name':"student's 3 father",'Roll_No':'789','Program':'BSCS'} ] # 用lambda遍历字典并解包为card函数的关键字参数 id_card = list(map(lambda d: card(**d), data)) # 遍历打印每个学生证文本,提升可读性 for card_text in id_card: print(card_text)
关键修改说明:
- map调用逻辑修正:通过
lambda d: card(**d)作为map的第一个参数,每次迭代data中的字典时,自动把字典键值对解包成card函数的关键字参数,完美匹配函数的参数列表。 - 数据笔误修复:把第二个字典的
'F_Name:'改为'F_Name',确保参数传递完整。 - 输出优化:将原代码直接打印列表的方式,改为遍历打印每个学生证文本,结果更直观。
内容的提问来源于stack exchange,提问作者Saqlain Mushtaque
相关产品推荐
相关产品推荐

