for循环将字典添加到列表中出现覆盖前面数据的问题

for循环将字典添加到列表中出现覆盖前面数据的问题

错误代码:

# -*- coding: utf-8 -*-
# @Time    : 2021/4/19 11:27 PM
# @Author  : 余少琪
# @FileName: test.py
# @email   : 1603453211@qq.com

user_list = []
dic = {
   }

for i in range(3):
    username = input("请输入您的用户名:")
    password = input("请输入您的密码:")
    dic["用户名"] = username
    dic["密码"] = password
    user_list.append(dic)
    
print(user_list)

结果:
请输入您的用户名:yushaoqi
请输入您的密码:123456
请输入您的用户名:yushaoqi1
请输入您的密码:123456
请输入您的用户名:yushaoqi2
请输入您的密码:123456
[{
   '用户名': 'yushaoqi2', '密码': '123456'}, {
   '用户名': 'yushaoqi2', '密码': '123456'}, {
   '用户名': 'yushaoqi2', '密码': '123456'}]

我们可以看到上面的代码,我们通过for循环输入了3次不同的用户名和密码,并且添加到 user_list 的列表中,但是最终 user_list 打印了三次相同的数据

分析原因:

可以发现每次 for 循环添加到字典中,都会覆盖掉上次添加的数据,并且内存地址都是相同的,所以就会影响到列表中已经存入的字典。因为字典的增加方式dict[‘aaa] = bbb,这种形式如果字典里有对应的key就会覆盖掉,没有key就会添加到字典里。

解决方法:

# -*- coding: utf-8 -*-
# @Time    : 2021/4/19 11:30 PM
# @Author  : 余少琪
# @FileName: test.py
# @email   : 1603453211@qq.com

user_list = []

for i in range(3):
    dic = {
   }
    username = input("请输入您的用户名:")
    password = input("请输入您的密码:")
    dic["用户名"] = username
    dic["密码"] = password
    user_list.append(dic)

print(user_list)

结果:
请输入您的用户名:yushaoqi
请输入您的密码:yushaoqi
请输入您的用户名:yushaoqi1
请输入您的密码:yushaoqi1
请输入您的用户名:yushaoqi2
请输入您的密码:yushaoqi2
[{
   '用户名': 'yushaoqi', '密码': 'yushaoqi'}, {
   '用户名': 'yushaoqi1', '密码': 'yushaoqi1'}, {
   '用户名': 'yushaoqi2', '密码': 'yushaoqi2'}]

Process finished with exit code 0

每次for循环都将字典初始化,然后再添加数据,就解决问题啦~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100689.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SPPNet总结

    SPPNet总结背景:RCNN使用CNN作为特征提取器,首次使得目标检测跨入深度学习的阶段。但是在RCNN中,因为全连接层的神经元个数是固定的(权重矩阵的维数是固定的),所以采取对于每一个区域候选都需要首先将图片放缩到固定尺寸(227×227),然后为每个区域候选提取CNN特征的方案。这里存在两个瓶颈,第一重复为每个regionproposal提取特征是及其费时的,SelectiveSearch对于每幅图片产生2k左右个regionproposal,也就是意味着一幅图片需要经过2k次完整的CNN计算得到最终的结果。

    2022年5月2日
    44
  • 常用哈希函数介绍_简单说哈希函数是什么

    常用哈希函数介绍_简单说哈希函数是什么哈希函数介绍什么是哈希?在记录的关键字与记录的存储地址之间建立的一种对应关系叫哈希函数。哈希函数就是一种映射,是从关键字到存储地址的映射。通常,包含哈希函数的算法的算法复杂度都假设为O(1),这就是为什么在哈希表中搜索数据的时间复杂度会被认为是”平均为O(1)的复杂度”.在讲解具体内容前,首先我们要清楚以下几个概念:冲突(碰撞)对于不同的关键字ki、kj,若ki!=kj,但H(ki)=H(kj)的现象叫冲突(collision),即不同的输入却有相同的输出。我们应该尽量避免冲突,因为冲

    2025年6月27日
    0
  • 深度相机之TOF原理详解

    深度相机之TOF原理详解3D建模是VR领域的重要技术基础,而随着深度相机消费级别的普及,对3D建模在硬件支持方面迈出了很关键的一步,本文分享了TOF深度相机的原理,应用的领域,能很好的给读者一个全局的把握

    2022年5月26日
    42
  • 托马斯微积分什么时候学_普林斯顿微积分好在哪

    托马斯微积分什么时候学_普林斯顿微积分好在哪托马斯微积分和微积分学教程Samewithlinearalgebra,calculusisalsocloselyrelatedtoprogramming.与线性代数一样,微积分也与编程紧密相关。Youmightknowthefirsttwocoursesinthefirstgradeofcomputerscienceandengineerin…

    2025年7月29日
    1
  • 基于实践的LabVIEW零基础入门视频教程

    原文地址::http://blog.eeecontrol.com/LabVIEW1/《基于实践的LabVIEW零基础入门视频教程》资料不在多,而在于精,资料太多,反而会迷失方向,学习最怕的就是打乱仗,选择对的方向,比努力更重要,这也是本人的亲身经历!《基于实践的LabVIEW零基础入门视频教程》方向明确,适合零基础和初学者,针对性强,本课程将用项目与实践的方法带领大家零

    2022年4月5日
    53
  • hdu 4908 BestCoder Sequence

    hdu 4908 BestCoder Sequence

    2021年12月2日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号