循环字典列表时如何保存变量供外部函数调用?
解决循环中变量覆盖的问题
你遇到的问题是因为循环里每次都会重新赋值name、age、address这三个变量,循环结束后自然只剩最后一次的数值。要把每组数据都传入函数,正确做法是在循环内部直接调用目标函数,每遍历到一组字典,就立刻把当前参数传给函数使用。
举个具体例子:
假设你有需要调用的函数,比如:
def process_person(name, age, address): # 这里写你的函数逻辑,比如打印信息 print(f"姓名:{name},年龄:{age},地址:{address}")
修改循环代码,在循环内部调用函数:
person_list = [{"name":"Jane", "age":27, "address":"aaaaa"}, {"name":"Mike", "age":28,"address":"aaasdf"}] for person in person_list: name = person['name'] age = person['age'] address = person['address'] # 直接传入当前循环的参数调用函数 process_person(name, age, address)
这样运行后,两组数据都会被传入函数处理,不会只保留最后一组。
更简洁的写法(可选)
因为字典键名和函数参数名完全对应,你可以用字典解包简化代码,不用手动逐个取键值:
person_list = [{"name":"Jane", "age":27, "address":"aaaaa"}, {"name":"Mike", "age":28,"address":"aaasdf"}] for person in person_list: # **person 自动把字典键值对转换成函数参数 process_person(**person)
运行效果和上面完全一致,适合参数较多的场景。
内容的提问来源于stack exchange,提问作者Plain Jane
相关产品推荐
相关产品推荐

