遍历字典时值重复输出的问题求助
遍历字典时值重复输出的问题求助
嗨,别担心,作为编程新手遇到这种小问题太正常啦😉
咱们先看看你代码里的问题出在哪:你在if person in fav_lan:的代码块里多写了一个完全没必要的循环——for language in fav_lan.values(),这个循环会遍历字典里所有的7个语言值,所以每找到一个在字典里的名字,就会跟着执行7次print(fav_lan[person]),这就是语言重复打印7次的核心原因。
其实你根本不需要这个额外的循环,当你确认person在字典fav_lan里的时候,直接通过fav_lan[person]就能精准拿到这个人对应的语言值啦!
给你修正后的完整代码:
fav_lan={"Zuza":"Python","Ago":"C", "Jessie":"Python","Maria":"Java", "Lou":"Python","Edo":"Java","Yvonne":"C"} p_list=["Jenny","Lou","Zuza","Robert","Ago","Adam"] for person in p_list: if person in fav_lan: # 直接通过键获取对应的值,不需要额外循环 print(f"Hi {person}, thank you for voting, your favorite language is: {fav_lan[person]}") else: print(f"Hi {person}, you need to vote first")
另外你提到用set()尝试解决,结果只把重复的语言变成3种,但这其实没触碰到问题本质——因为你本来就不需要遍历所有语言值,只需要针对当前的person取出对应的值就够了呀。
慢慢摸索,新手阶段踩这些小坑都是成长的必经之路哦!
备注:内容来源于stack exchange,提问作者Zuzanna Norek
相关产品推荐
相关产品推荐

