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

Python countries函数优化:仅输出各洲对应国家列表问题

问题需求

补全Python的countries函数,函数接收一个以大洲为键、对应国家列表为值的字典,要求仅输出每个大洲的国家名称,每个大洲的国家单独占一行。

尝试的代码及问题

第一种实现

def countries(countries_dict):
    result = ""
    # 遍历字典的键值对
    for continent, countries in countries_dict.items(): 
        # 拼接列表字符串和换行符
        result += str(countries) + '\n' 
    return result

print(countries({"Africa": ["Kenya", "Egypt", "Nigeria"], "Asia":["China", "India", "Thailand"], "South America": ["Ecuador", "Bolivia", "Brazil"]}))

# 预期输出:
# ['Kenya', 'Egypt', 'Nigeria']
# ['China', 'India', 'Thailand']
# ['Ecuador', 'Bolivia', 'Brazil']

该代码会输出带方括号和引号的列表格式字符串,若需求是纯国家名称拼接(无列表符号),则不符合预期。

第二种实现

def countries(continent_dict):
    for continent, countries_list in continent_dict.items():
     print(continent + ":")
     for country in countries_list:
       print("- " + country)

该代码会额外输出大洲名称和国家前缀-,不符合“仅输出国家名称”的需求。

正确实现

根据不同需求提供两种方案:

方案1:输出逗号分隔的纯国家名称(每行对应一个大洲)

def countries(countries_dict):
    result = ""
    # 仅遍历字典的值(忽略大洲键)
    for countries in countries_dict.values():
        # 用逗号加空格拼接国家列表
        result += ", ".join(countries) + '\n'
    # 移除最后多余的换行符
    return result.rstrip('\n')

# 调用示例
print(countries({"Africa": ["Kenya", "Egypt", "Nigeria"], "Asia":["China", "India", "Thailand"], "South America": ["Ecuador", "Bolivia", "Brazil"]}))

输出结果:

Kenya, Egypt, Nigeria
China, India, Thailand
Ecuador, Bolivia, Brazil

方案2:直接打印列表格式字符串(匹配你给出的预期)

如果你的需求确实是输出带方括号的列表格式,原代码逻辑是正确的,若执行未达预期,可检查字典结构或函数调用是否有误。也可以调整为更简洁的写法:

def countries(countries_dict):
    return '\n'.join(str(countries) for countries in countries_dict.values())

print(countries({"Africa": ["Kenya", "Egypt", "Nigeria"], "Asia":["China", "India", "Thailand"], "South America": ["Ecuador", "Bolivia", "Brazil"]}))

内容的提问来源于stack exchange,提问作者Marina V Rodriguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:03:15