找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2513|回复: 4

[求助] 一个字典添加值问题,请教一下

4

主题

4

帖子

4

积分

贫民

积分
4
drinkwater 发表于 2018-9-29 04:28:22 | 显示全部楼层 |阅读模式
movie_dic={}
movie=[]
for x in moviesource:
           movie_dic['M_name']=moviesource['movie-title']
           movie.append(movie_dic)
           
最后print出来的movie列表怎么是这样的????
___________________________________________________


[{'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}, {'M_name': '新灰姑娘'}]

______________________________________________________________
            

后来我把“movie_dic={}”放进for 里面去


movie=[]
for x in moviesource:
            movie_dic={}
           movie_dic['M_name']=moviesource['movie-title']
           movie.append(movie_dic)

这样才打印成功。。

[{'M_name': '黄金兄弟'}, {'M_name': '悲伤逆流成河'}, {'M_name': '反贪风暴3'}, {'M_name': '江湖儿女'}, {'M_name': '碟中谍6:全面瓦解'}, {'M_name': '虎胆追凶'}, {'M_name': '大闹西游'}, {'M_name': '镰仓物语'}, {'M_name': '爱猫之城'}, {'M_name': '哥斯拉:怪兽行星'}, {'M_name': '阿尔法:狼伴归途'}, {'M_name': '冷恋时代'}, {'M_name': '巨齿鲨'}, {'M_name': '转山'}, {'M_name': '传奇的诞生'}, {'M_name': '我不是药神'}, {'M_name': '念念手纪'}, {'M_name': '西虹市首富'}, {'M_name': '快把我哥带走'}, {'M_name': '苏丹'}, {'M_name': '解剖室灵异事件之男生宿舍'}, {'M_name': '极品师徒'}, {'M_name': '神秘世界历险记4'}, {'M_name': '未择之路'}, {'M_name': '天慕'}, {'M_name': '禹神传之寻找神力'}, {'M_name': '精灵旅社3:疯狂假期'}, {'M_name': '足球王者'}, {'M_name': '影'}, {'M_name': '李茶的姑妈'}, {'M_name': '无双'}, {'M_name': '营救汪星人'}, {'M_name': '胖子行动队'}, {'M_name': '三国杀·幻'}, {'M_name': '两只小猪之勇闯神秘岛'}, {'M_name': '古剑奇谭之流月昭明'}, {'M_name': '阿凡提之奇缘历险'}, {'M_name': '新灰姑娘'}]



想请教一下为什么??
回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-9-29 11:53:51 | 显示全部楼层
movie_dic 字典用update试试看
回复 支持 反对

使用道具 举报

0

主题

4

帖子

4

积分

贫民

积分
4
QQ
宴之敖者 发表于 2018-9-29 21:20:10 | 显示全部楼层
或许可以这样理解,创建一个movie_dic字典变量,分配内存后。每一个循环都是在改变movie_dic的值,但是append命令并没有将原来的值复制到movie列表中,可以仅仅创建一个指针指向了movie_dic。所以循环结束,movie列表里的值全部指向了movie_dic。重新创建movie_dic{},使得append命令复制了原来的值。
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-9-29 22:23:14 | 显示全部楼层
本帖最后由 sheeboard 于 2018-9-29 22:30 编辑
宴之敖者 发表于 2018-9-29 21:20
或许可以这样理解,创建一个movie_dic字典变量,分配内存后。每一个循环都是在改变movie_dic的值,但是appe ...

就赋了一次值没循环。所以试试用update,用x来更新movie_dic,如果x是dict。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
pycharm 发表于 2018-9-30 14:21:13 | 显示全部楼层
原因在于list,dict是可变对象,属于浅拷贝,所以不会开辟新空间
采用深拷贝,相当于开辟新空间,跟你把movie_dic = {}移到for 循环里面一样,开辟新空间
from copy import deepcopy
movie_dic={}
movie=[]
for x in moviesource:
           movie_dic['M_name']=moviesource['movie-title']
          movie_sou = deepcopy(movie_dic)
           movie.append(movie_sou)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表