鱼C论坛

 找回密码
 立即注册
查看: 523|回复: 10

“列表中嵌套字典”的知识点求职!

[复制链接]
发表于 2020-4-5 22:41:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lidaxia 于 2020-4-5 22:43 编辑
#新建一个aliens列表
aliens=[]
#aliens中生成5个元素,这里的元素是字典
for alien_num in range(0,5):
    alien={
        'color':'green',
        'point':5,
        'speed':'slow'
        }
    aliens.append(alien)
#判断列表中的前三个字典,颜色键是否为绿色,是的话更改其字典的键值
for alien_change in aliens[0:3]:
    if alien_change['color']=='green':
        alien_change['color']='yellow'
        alien_change['point']=10
        alien_change['speed']='medium'
#输出aliens列表  
for alien in aliens[:5]:
    print(alien)
以下是编译结果:
{'color': 'yellow', 'point': 10, 'speed': 'medium'}
{'color': 'yellow', 'point': 10, 'speed': 'medium'}
{'color': 'yellow', 'point': 10, 'speed': 'medium'}
{'color': 'green', 'point': 5, 'speed': 'slow'}
{'color': 'green', 'point': 5, 'speed': 'slow'}

----求助:为什么通过if语句更改alien_change的值,会对aliens的值产生影响呢:万分感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-5 23:04:11 | 显示全部楼层
alien_change 只是接受aliens键的容器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 23:25:37 | 显示全部楼层
屈卓 发表于 2020-4-5 23:04
alien_change 只是接受aliens键的容器

你看下我上面发的,
当改变了alien_change的值之后,为什么aliens的值会根着变化呢?
我记得按照书本上的说法,alien_change是个变量,列表aliens的值赋值给了alien_change,那alien_change(变量)发生变化,怎么会对赋值给他的aliens产生变化呢?
帮忙解答一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-5 23:28:34 | 显示全部楼层
lidaxia 发表于 2020-4-5 23:25
你看下我上面发的,
当改变了alien_change的值之后,为什么aliens的值会根着变化呢?
我记得按照书本上 ...

还是说alien_change,当做容器看待,容器变化了,会将值反赋值给aliens,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 08:11:28 | 显示全部楼层
# 新建一个aliens列表
aliens = []
# aliens中生成5个元素,这里的元素是字典
for alien_num in range(0, 5):
    alien = {
        'color': 'green',
        'point': 5,
        'speed': 'slow'
    }
    aliens.append(alien)
# 判断列表中的前三个字典,颜色键是否为绿色,是的话更改其字典的键值
for alien_change in aliens[0:3]:
    alien_change = alien_change.copy()    # 拷贝
    if alien_change['color'] == 'green':
        alien_change['color'] = 'yellow'
        alien_change['point'] = 10
        alien_change['speed'] = 'medium'
# 输出aliens列表
for alien in aliens[:5]:
    print(alien)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 12:04:05 | 显示全部楼层
我实在没看懂你的问题,我猜一下你不懂的地方:
- python中,列表,字典和元组都可以无限嵌套
- 你遍历列表中的元素,这些元素都是字典
- 每遍历一次,都将当前遍历出来的字典赋值给alien_change
- 你可以理解为alien_change是一个指针,指向从列表遍历出来当前的字典
- 所以你操作alien_change就是在操作列表中的字典
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 10:49:04 | 显示全部楼层
lidaxia 发表于 2020-4-5 23:28
还是说alien_change,当做容器看待,容器变化了,会将值反赋值给aliens,

是的,他只是遍历一下 alien_change 可以随便换其他的值都可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 10:50:04 | 显示全部楼层
屈卓 发表于 2020-4-7 10:49
是的,他只是遍历一下 alien_change 可以随便换其他的值都可以

我也是小白,可以加个好友吗 共同学习  v 19800326887
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 21:47:02 | 显示全部楼层
会计的会怎么念 发表于 2020-4-6 12:04
我实在没看懂你的问题,我猜一下你不懂的地方:
- python中,列表,字典和元组都可以无限嵌套
- 你遍历列 ...

好的,您的回答解决了我的疑问,十分感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 21:48:33 | 显示全部楼层
屈卓 发表于 2020-4-7 10:49
是的,他只是遍历一下 alien_change 可以随便换其他的值都可以

多谢您的解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-8 16:54:42 | 显示全部楼层
lidaxia 发表于 2020-4-7 21:47
好的,您的回答解决了我的疑问,十分感谢

好的!不客气!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 03:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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