如何遍历字典列表取值并转为字符串?含for循环与列表推导实现
提取字典列表中的姓名并拼接成字符串
问题背景
你手头有一个存储作者信息的字典列表:
authors = [ {'id': 1, 'name': 'Grace Hopper'}, {'id': 2, 'name': 'Karl Marx'} ]
想要得到目标输出:'Grace Hopper, Karl Marx',但当前的嵌套循环代码把每个字典的所有值(包括id)都打印出来了,我们可以通过两种方式修正这个问题。
方法一:使用普通for循环实现
核心思路是只提取每个字典里的name字段,先把这些名字收集到一个列表中,最后用逗号加空格拼接成字符串:
authors = [ {'id': 1, 'name': 'Grace Hopper'}, {'id': 2, 'name': 'Karl Marx'} ] # 初始化一个空列表用来存名字 name_collection = [] for author_dict in authors: # 直接通过键'name'获取对应的值,添加到列表里 name_collection.append(author_dict['name']) # 用', '拼接列表中的所有元素 final_result = ', '.join(name_collection) print(final_result) # 输出: Grace Hopper, Karl Marx
你之前的嵌套循环会遍历每个字典的所有键值对,所以才会把id也输出。现在我们跳过id,只取需要的name值,就能得到想要的结果。
方法二:使用列表推导式实现
如果想要更简洁的写法,列表推导式可以一行完成名字的收集,再配合join方法生成目标字符串:
authors = [ {'id': 1, 'name': 'Grace Hopper'}, {'id': 2, 'name': 'Karl Marx'} ] # 列表推导式收集所有name值,再拼接 final_result = ', '.join([author['name'] for author in authors]) print(final_result) # 输出: Grace Hopper, Karl Marx
如果处理的是非常大的列表,还可以用生成器表达式替代列表推导式,这样不会一次性把所有名字加载到内存里,更高效:
final_result = ', '.join(author['name'] for author in authors)
内容的提问来源于stack exchange,提问作者LSM
相关产品推荐
相关产品推荐

