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

Python循环向列表追加字典时重复覆盖旧数据如何解决?

问题原因

Python中的字典属于可变对象,你在循环外声明了temp = {},意味着全程只有一个内存地址固定的temp字典实例:

  • 每次循环修改temp的键值,都是直接修改同一个实例的内容
  • 调用append(temp)时,实际是把temp的内存引用存入列表,而非复制一份新的字典
  • 最终列表里所有元素都指向同一个temp实例,所有值都会被最后一次循环的赋值覆盖,出现全量重复的情况。

修复方案

把temp字典的声明移动到循环内部,每次循环都生成一个全新的字典实例,保证每次加入列表的都是独立的字典对象,互不干扰。同时原代码中final的赋值放在循环内属于冗余操作,循环结束后赋值一次即可。

修改后代码

import requests

url = "https://api.henrikdev.xyz/valorant/v3/matches/eu/shaun/6969?filter=competitive"
r = requests.get(url).json()
red = []
blue = []
final = {}
for i in range(0,10):
    temp = {} # 每次循环新建独立的temp字典
    player_data = r['data'][0]['players']['all_players'][i]
    temp['team'] = player_data['team']
    temp['player'] = player_data['name']
    temp['stats']= player_data['stats']
    temp['char'] = player_data['character']
    if temp['team'] == "Red":
        red.append(temp)
        print(red)  
    elif temp['team'] == "Blue":
        blue.append(temp)
# 循环结束后统一赋值final
final["blue"] = blue
final['red']= red

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:48:00