Python遍历字典列表打印键值对仅输出键该如何解决
错误原因
- 遍历逻辑错误:你使用的是两层嵌套结构,外层为列表,每个元素是字典。直接遍历列表中的字典时,默认只会遍历字典的键,且你直接对字典做
key, value拆包,实际是把字典的两个键first_name、last_name分别赋值给了key和value,所以只会输出两个键拼接的结果。另外函数内硬编码遍历全局变量students,没有用到传入的参数somelist,逻辑不通用。 - 多余None输出:你定义的
listd函数没有手动设置返回值,Python函数默认返回None,最后额外加的print(listd(students))就会把这个默认返回的None打印出来。
修正后代码
如果你的字典键固定为first_name和last_name,可以用下面的写法直接输出:
students = [ {'first_name': 'Michael', 'last_name' : 'Jordan'}, {'first_name' : 'John', 'last_name' : 'Rosales'}, {'first_name' : 'Mark', 'last_name' : 'Guillen'}, {'first_name' : 'KB', 'last_name' : 'Tonel'} ] def listd(somelist): # 先遍历列表里的每一个字典 for item in somelist: # 按要求格式拼接输出 print(f"first_name - {item['first_name']}, last_name - {item['last_name']}") # 直接调用函数即可,不需要额外加print listd(students)
如果需要适配字典键不固定的通用场景,可以用下面的写法:
def listd(somelist): for item in somelist: output_parts = [] # 遍历字典的所有键值对 for k, v in item.items(): output_parts.append(f"{k} - {v}") # 拼接所有键值对后输出 print(', '.join(output_parts)) listd(students)
内容的提问来源于stack exchange,提问作者Kawthar Alkhater
相关产品推荐
相关产品推荐

