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
相关产品推荐
相关产品推荐

