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

Python从两个循环变量生成字典仅显示最后值该如何修复?

问题根因
  • 循环逻辑错误:你写的两次独立for循环中,每次都直接给words、definitions变量重新赋值,循环结束后两个变量只会保留最后一次遍历得到的内容
  • 容器类型误用:{words, definitions}是Python集合(set)的创建语法,无法实现单词到释义的键值对映射需求,就算你存了多个值也不会有对应关系
  • 对应关系丢失:独立遍历单词、释义两个列表,没有做位置匹配,就算你把两个变量改成列表存储,也无法保证单词和它的释义正确对应
修复后可运行代码
from bs4 import BeautifulSoup
import requests

URL = "https://www.vocabulary.com/lists/176046"
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')

# 获取所有单词和释义的节点列表
word_nodes = soup.find_all(attrs={'class':'word dynamictext'})
definition_nodes = soup.find_all(attrs={'class':'definition'})  

# 初始化空字典存储单词和释义的映射
my_dict = {}
# 同步遍历两个列表,保证单词和释义一一对应
for word_node, def_node in zip(word_nodes, definition_nodes):
    word = word_node.text.strip()
    definition = def_node.text.strip()
    my_dict[word] = definition

# 打印所有单词和释义
print(my_dict)
核心修改说明
  • 提前初始化空字典my_dict,用于循环中逐次添加键值对,不会覆盖之前存入的内容
  • 用zip()函数同步遍历单词、释义节点列表,页面中单词的排序和释义的排序是一一对应的,用zip配对可以保证映射关系正确
  • 循环内直接对字典做赋值操作,每次遍历都将对应单词和释义作为键值对存入字典
  • 补充了strip()操作去除单词和释义前后的多余空白字符,提升数据整洁度

内容的提问来源于stack exchange,提问作者Wassim Maestro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:09:04