如何用生成器表达式筛选字典中满足条件的键值对?
解决生成器表达式筛选字典键值对的语法错误
你的代码触发SyntaxError的原因很明确:生成器表达式中返回的键值对元组没有用括号包裹。Python语法规则里,生成器表达式如果要产出元组,必须显式用小括号把元组括起来,否则解释器会把key, value解析成两个独立的表达式,直接触发语法错误。
修改后的正确代码如下:
guests = {'Jane': 35, 'Kyle': 20, 'Justin': 43, 'Ayla': 22} # 给key, value加上小括号,明确是元组类型的产出项 age_check = ((key, value) for key, value in guests.items() if value >= 21) for guest in age_check: print(guest)
运行这段代码会输出:
('Jane', 35) ('Justin', 43) ('Ayla', 22)
如果你最终想要的是一个筛选后的字典,也可以直接用字典推导式(比生成器转字典更高效):
filtered_guests = {key: value for key, value in guests.items() if value >= 21} print(filtered_guests) # 输出: {'Jane': 35, 'Justin': 43, 'Ayla': 22}
内容的提问来源于stack exchange,提问作者Conner Hill
相关产品推荐
相关产品推荐

