使用lambda与zip时触发TypeError:zip参数需支持迭代的问题求助
问题分析与解决
错误根源
你遇到的TypeError: zip argument #1 must support iteration,核心原因不是返回空值,而是get_account_jira_account_name函数在第一个分支(if not df.empty:)里只给变量赋值,没有写return语句。这会导致该分支下函数默认返回None,而None无法被迭代,传给zip时直接触发错误。
修复代码
修改函数,确保所有分支都返回可迭代的二元组:
def get_account_jira_account_name(year_month, tenant): sql_tenant_account = f''' Some query";''' df=get_dataframe(sql_tenant_account) if not df.empty: account_name = df['account_name'].values[0] jira_account_name = df['jira_account_name'].values[0] # 新增return语句,返回二元组 return account_name, jira_account_name else: sql_tenant_account = f'''Some Query"; ;''' df=get_dataframe(sql_tenant_account,'sla','COMMONDB') if len(df) !=0: account_name = df['account_name'].values[0] jira_account_name = '' return account_name, jira_account_name else: print('When I get the error it happens here') account_name = 'not found' jira_account_name = 'not found' return account_name, jira_account_name
补充说明
如果确实需要返回“空的可迭代值”,可以返回('', '')或(None, None)这类二元组,确保返回值始终是能被zip处理的可迭代对象,绝对不能让函数返回None。
内容的提问来源于stack exchange,提问作者Ramish
相关产品推荐
相关产品推荐

