错误代码:
# -*- 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循环都将字典初始化,然后再添加数据,就解决问题啦~
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100689.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...