关于用列表append字典数据却一直重复问题

news2025/2/23 18:56:40

关于python用列表append字典数据却一直重复问题

      • 用列表append添加字典数据却一直重复最后一个
      • 理解了上面的内容之后,我们再回到最初的问题
      • 解决方法

用列表append添加字典数据却一直重复最后一个

以下是我们的代码:

def parse_data(data):
    parse_dict = dict()
    parse_list = list()
    for i in data:
        parse_dict['标题'] = i['release_name'] if i['release_name'] else '空'
        parse_list.append(parse_dict)

这段代码执行完后,最后并不是完整的解析数据,而是重复的数据。
上面是我提取自己项目的某一块进行修改,可能不好解释,应该是如以下的代码:

l = list()
d = dict()
for i in range(10):
    d["num"] = i
    l.append(d)

结果:
在这里插入图片描述

这个问题就是引用问题导致!
我们会以为是这样:
在这里插入图片描述
其实是这样:
在这里插入图片描述

其实我们定义每一个变量其实都是对内存地址中一个对象进行引用,对象就是内存中的一块数据。

举个例子:

a = 1

这段代码,Python 会在内存中创建一个数值为1的 int 类型的对象,变量 a 是一个到该对象内存地址的引用,如下图所示:
在这里插入图片描述
我们再来创建一个变量 b,让它等于 a

a = 1
b = a
print(id(a))
print(id(b))

输出结果:
在这里插入图片描述
之所以会这样,变量 b 其实存的也是一个引用,指向的是一个对象,这个对象就是 a 所指向的对象,所以 b 和 a 其实指向了同一个对象。

接下来我们改变一下 a 的值:

a = 2
print(id(a))
print(id(b))

输出结果:
在这里插入图片描述
看到 a 的地址发生了变化,而b却没有变。因为这里我们创建了一个新的对象,这个对象是一个数值为2的 int 类型对象,它的地址不同于上面创建的第一个对象(数值为1的 int 对象)。现在的 a 指向的是这个新的对象。

Python 中任何类型的对象,当它赋值给变量的时候,变量里存的都是引用。这也意味着,我们在读取变量的时候,实际读取的是变量所指向的对象的内容。

理解了上面的内容之后,我们再回到最初的问题

这个过程中,d始终指向同一个字典,只是字典中的值从0变化到了9。

所以每次循环中 , l.append(d) 都是把同一个对象的引用 append 到了 l 中。循环结束,l 就变成了这样
在这里插入图片描述
上面的 a(看成字典) 是同一个引用,指向的都是同一个对象。a 指向的地址一直没变,变化的是字典里的内容。

所以现在 l 的内容就是:
在这里插入图片描述

解决方法

解决方法就是把创建字典变量写到循环里面来:

l = list()
for i in range(10):
	d = dict()
    d["num"] = i
    l.append(d)

结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2079256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

卡在恢复模式怎么办?这样操作一键轻松退出iPhone 恢复模式

iOS 18beta版本发布后,已经成功升级到iOS 18beta并享受新功能的小伙伴们真是太幸运了。但是还有一些小伙伴在更新iOS 18beta的过程中遇到了各种问题,比如iPhone卡在恢复模式是常见问题。如果你也遇到此问题,不要着急,接下来我们将…

qt生成uid

QUuid 是 Qt 库中的一个类&#xff0c;用于生成和处理全局唯一标识符&#xff08;UUID&#xff09;。UUID 是一种128位的标识符&#xff0c;通常用于唯一标识对象&#xff0c; #include <QUuid> QString uid QUuid::createUuid().toString(QUuid::WithoutBraces);QUuid…

自动生成文章的软件,提升文章写作体验非常棒

在这个信息时代&#xff0c;文章写作是少不了的&#xff0c;然而文章写作对于每个人来说却是一件耗时费力的事情&#xff0c;但随着技术的发展&#xff0c;自动生成文章的软件的出现让文章写作变得尤为简单&#xff0c;它不仅可以节省大家的写作时间&#xff0c;而且还能提高写…

专门康复自闭症儿童学校哪里有?

在探索自闭症儿童康复教育的道路上&#xff0c;家长们总是希望为孩子找到最专业、最可靠的康复机构。在众多选择中&#xff0c;广州市星贝育园康复中心以其独特的优势和显著的康复效果脱颖而出&#xff0c;成为了成为众多家庭信赖的自闭症儿童康复学校。 星贝育园康复中心&…

交换机原理与配置

目录 一、数据链路层的功能 1.1 1.2以太网mac地址 二、以太网帧 2.1udp帧&#xff0c;ip数据报&#xff0c;以太网帧格式 2.2以太网帧格式 2.3ip数据报格式 三、交换机的工作原理 3.1 四、交换机的命令行配置 4.1命令行的层次结构 4.2 &#xff1f;的作用 4.3 tab键…

c++83 结构体深copy与浅copy

typedef struct Teacher {char name[64];int age;char* pname2;//结构体里套用指针 }Teacher;void copyTeacher(Teacher* to, Teacher* from) {//*to *from;memcpy(to, from, sizeof(Teacher));//完成一次copy 同理t2释放内存 } void main() {Teacher t1;Teacher t2;strcpy(t1…

机器视觉-2 缺陷检测常见场景与常用检测方法

目录 目录 一、缺陷检测常见场景 二、缺陷检测常用方法 1. 单调背景 方法1: 阈值分割 方法2: 差分法 2. 规则纹理背景 方法1: 模板匹配 方法2: Gabor滤波器 方法3&#xff1a;傅里叶变换 3. 无规则图像 方法1: 边缘检测 轮廓检测 方法2: 图像分割&#xff08;如Watershed算法&…

PHP 全攻略:从环境搭建到实战项目的深度探索

一、引言 PHP&#xff08;Hypertext Preprocessor&#xff09;是一种广泛应用于 Web 开发的服务器端脚本语言。它具有简单易学、功能强大、开源免费等特点&#xff0c;被众多开发者和企业所青睐。本文将详细介绍 PHP 的开发环境搭建、基本语法格式、变量与变量作用域、常量与数…

将Keil工程文件移植到VScode+Platformio环境下

1创建工作空间 1.1创建PIO工程 若弹出报错不用管他&#xff08;装加密软件的电脑会报错并少创建几个文件&#xff09;。PIO会在我们选定的文件夹下创建名为Name&#xff08;Project&#xff09;的文件夹 打demo/Project文件夹可以看到生成一堆文件 1.2创建CubeMX工程 网上很多…

【推荐】领导说Java线程池都用不好,明天不要来了?

引言 工作中难免会遇到各种并发场景&#xff0c;笔者先后经历的公司中&#xff0c;很多同事或多或少都用到过Java线程池来实现并发处理。 但线程池用的好的&#xff0c;却没几个。笔者也曾排查过线上问题&#xff0c;有几次&#xff0c;都是因为线程泄漏&#xff0c;导致出现…

无主灯设计:点亮空间美学的现代之选

在这个追求个性化与舒适度并重的时代&#xff0c;家居照明已不再是简单的照明需求&#xff0c;它逐渐演变为营造空间氛围、彰显居住者品味的重要元素。无主灯设计&#xff0c;作为现代照明设计的一种流行趋势&#xff0c;以其灵活多变、层次丰富、光线柔和的特点&#xff0c;赢…

《黑神话:悟空》中的AI技术运用

2024年8 月 20 日&#xff0c;《黑神话&#xff1a;悟空》全球同步上线&#xff0c;作为首个国产 3A 游戏&#xff0c; 1. A lot of money&#xff1a;大量资金 2. A lot of resources&#xff1a;大量资源 3. A lot of time&#xff1a;大量时间 一、悟空中的AI技术 《‌黑…

oracle exadata x8-2 crs有报错PRVG-12885

PRVG-12885 处理办法&#xff1a; Output from # dcli -l root -g dbs_group ip addr list | grep ib shows that all MTU sizes are 65520 Output from # ifconfig -a shows that the MTU size for the loopback interface was 16436 临时办法&#xff1a; Set the mtu…

vue-admin-template pan版使用方法

新建文件夹&#xff0c;创建后端子文件夹&#xff0c;使用命令行创建django后端&#xff1a;django-admin startproject 后端名称 首先下载vue-admin-template-master文件&#xff0c;将其复制进项目的前端文件夹&#xff0c;在命令行中切换到前端目录&#xff0c;执行npm ins…

特征工程-数据处理

一、读取数据 import pandas as pd import numpy as npdf pd.read_csv(E:/workspace/dataset/WA_Fn-UseC_-Telco-Customer-Churn.csv) df.head()字段解释&#xff1a; 二、数据质量探索 1、去重分析 df1 df.copy()# 判断是否存在重复 df1[customerID].nunique() df1.shape[…

性能飞跃!18种大模型指令调优技巧大放送,打造更强LLM!

指令调优&#xff08;IT&#xff09;&#xff0c;一种针对大型语言模型&#xff08;LLMs&#xff09;的训练方法&#xff0c;是提高大型语言模型能力和可控性的关键技术。该方法的核心目标是使LLM具备遵循自然语言指令并完成现实世界任务的能力。它弥补了LLM的下一个单词预测目…

[Meachines] [Easy] BoardLight Dolibarr17.0.0-RCE+Enlightenment v0.25.3权限提升

信息收集 IP AddressOpening Ports10.10.11.11TCP:22,80 $ nmap -p- 10.10.11.11 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 06:2…

【软件使用-MEGA】报错及解决方法

报错1&#xff1a;Error: MEGA has detected duplicate taxa labels. (in line 370) **************************************************************************** ; Please note the following important messages: ; **********************************…

怎么写文献综述?文献综述方法和工具推荐!

文献综述是每个科研人绕不过的坎&#xff0c;其实文献综述简单说就是对你自己研究主题之前的研究的一个完整的概括&#xff0c;这个完整的概括主要是来展示目前已有的一些观点和未来可能可以在这个主题之下能够研究的一些创新点&#xff0c;用很多文献来支撑你自己的研究主题。…

Java11 文件操作和io流

文件操作和IO流 文件操作和IO流磁盘操作File类创建file对象文件操作获取文件信息判断文件删除文件创建文件 Files工具类字符操作字节操作遍历目录&#xff08;非递归&#xff09; IO流字节操作&#xff08;字节流&#xff09;输出流&#xff1a;InputStream&#xff08;读&…