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

Python生成字典仅保留循环最后一次迭代结果的问题咨询

字典仅保留最后一次迭代结果的原因及解决方案

问题原因

Python字典的键具有唯一性,当你使用重复的键(比如title_list中反复出现的Rank:、Major:等)生成字典时,后续的键值对会直接覆盖之前的同键条目,最终每个键只会保留最后一次出现的对应值,这就是你只看到最后一组数据的核心原因。

解决方案

你的数据是每6个条目对应一个专业的完整信息,正确的做法是将每组数据封装为一个字典,再存入列表,以此保留所有专业的完整数据:

方式1:基于已有列表拆分处理

利用列表切片按固定步长(6)拆分,逐个生成字典并存入列表:

result_list = []
# 每组6个键值对,按步长6遍历
for i in range(0, len(title_list), 6):
    group_titles = title_list[i:i+6]
    group_values = value_list[i:i+6]
    result_list.append(dict(zip(group_titles, group_values)))

# 打印所有专业数据
for item in result_list:
    print(item)

方式2:解析时直接分组(更高效)

跳过中间列表存储,直接在BeautifulSoup解析阶段按组处理数据:

from bs4 import BeautifulSoup
with open('./Desktop/Payscale.html') as web:
    soup = BeautifulSoup(web, 'html.parser')

data = soup.find_all('td', 'data-table__cell')
result_list = []

# 每6个<td>对应一个专业的完整数据
for i in range(0, len(data), 6):
    major_dict = {}
    # 截取当前专业的6个<td>元素
    for each in data[i:i+6]:
        title = each.find('span', 'data-table__title').get_text()
        value = each.find('span', 'data-table__value').get_text()
        major_dict[title] = value
    result_list.append(major_dict)

# 输出所有结果
for idx, major_info in enumerate(result_list, 1):
    print(f"专业 {idx}:")
    print(major_info)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:19:04