Python中往列表中插入字典时,数据重复

先贴以下代码
UserInfo =[]
SelfMediaInfo = {'usr':'','pwd':'','videoIndex':''}
with open(r"D:\SelfMediaData.txt",'r') as SelfMediaFile:
    selfMediaInfos = SelfMediaFile.readlines()
    for i in range(len(selfMediaInfos)):
        selfMediaInfo = selfMediaInfos[i].split('----')
        SelfMediaInfo['usr'] = selfMediaInfo[0].strip()
        SelfMediaInfo['pwd'] = selfMediaInfo[1].strip()
        SelfMediaInfo['videoIndex'] = selfMediaInfo[2].strip()
        UserInfo.append(SelfMediaInfo)

代码的用途是读取txt文档中的数据,然后根据数据的分类分别保存到usr,pwd,videoIndex中,按照上面的代码执行会发现UserInfo中列表中的所有的数据与selfMediaInfos的最后一行数据完全一样,与代码设计初衷相违背。

Python中往列表中插入字典时,数据重复

经过调试分析发现,只要SelfMediaInfo中的数据一变化,UserInfo中的所有数据就会跟着变化。

在此参考以下文章将问题得到有效解决

《Python——列表中存放字典遇到的问题》

https://blog.csdn.net/qq_29721419/article/details/70310183

最后将UserInfo.append(SelfMediaInfo)修改为UserInfo.append(SelfMediaInfo.copy()),问题得到有效解决

Python中往列表中插入字典时,数据重复