You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用zip()处理字典筛选单病例国家代码报错求助

问题修复方案

错误原因分析

  • 第一处错误:cases = data['Total Cases'] == 1 是将整个病例列表与数值1做全局相等判断,仅返回单个布尔值,不满足zip()要求的可迭代对象输入条件
  • 第二处错误:zip(names, cases) 输出的是由(国家名, 对应病例数)元组组成的迭代器,转列表后是列表类型,无法通过字典键['Country']提取值

正确实现代码

按照要求使用zip()函数配对两个列表,筛选符合条件的国家:

def single_case_countries(data):
    # 取出国家列表和对应病例数列表
    country_list = data['Country']
    case_list = data['Total Cases']
    result = []
    # 用zip同时遍历两个列表,逐个判断
    for country, cases in zip(country_list, case_list):
        if cases == 1:
            result.append(country)
    # 匹配之前的逻辑,没有符合条件的国家时打印提示
    if not result:
        print('None found')
    return result

如果偏好更简洁的列表推导式写法,也可以写成:

def single_case_countries(data):
    result = [country for country, cases in zip(data['Country'], data['Total Cases']) if cases == 1]
    if not result:
        print('None found')
    return result

实现逻辑说明

  • zip()会按顺序将两个列表的对应位置元素配对,生成元组迭代器
  • 遍历迭代器时逐个判断病例数是否为1,符合条件就把对应的国家名加入结果列表
  • 最后返回收集到的所有符合条件的国家名列表,空结果时打印提示和之前的统计函数逻辑保持一致

内容的提问来源于stack exchange,提问作者GR_ZA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:45:03