Python循环中实现亲属类型与姓名对应输出的格式优化问题
解决方案:配对两个列表元素并格式化输出
这事儿很容易解决!你原来的代码是把两个列表分别完整输出,所以才会得到['Brother', 'Aunt'] ['Andreas Petersen', 'Anni Nielsen']这样的结果。要实现亲属类型: 姓名的对应格式,咱们可以用Python的zip()函数来把两个列表的对应元素一一绑定,再逐个格式化即可,不管亲属数量有多少都能适配。
方法1:循环配对打印
直接用zip()把other_relatives_kind和other_relatives_name打包,遍历每一对元素并格式化输出:
for kind, name in zip(victim['other_relatives_kind'], victim['other_relatives_name']): print(f"{kind}: {name}", end=" ")
这里的end=" "是让每个配对结果之间用空格分隔,而不是默认的换行。不过这种方式最后会多一个末尾空格,如果在意的话可以用下面更优雅的方法。
方法2:用join生成统一字符串(推荐)
先通过列表推导式把每一对元素格式化成字符串,再用" ".join()把所有字符串拼接成一个整体,最后打印:
# 生成所有配对的格式化字符串 relative_pairs = [f"{kind}: {name}" for kind, name in zip(victim['other_relatives_kind'], victim['other_relatives_name'])] # 拼接成最终输出 formatted_output = " ".join(relative_pairs) print(formatted_output)
用这个方法处理你给出的输入,会完美输出:
Brother: Andreas Petersen Aunt: Anni Nielsen
注意事项
- 确保
other_relatives_kind和other_relatives_name两个列表的长度一致,这样每一个亲属类型都能对应到正确的姓名。如果担心长度不一致的情况,可以用itertools.zip_longest来处理(需要先导入itertools模块),不过一般场景下用户输入的类型和姓名数量是对应的,zip()就足够用了。
内容的提问来源于stack exchange,提问作者aquatic7
相关产品推荐
相关产品推荐

