鱼C论坛

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

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

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

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

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

x
本帖最后由 lidaxia 于 2020-4-5 22:43 编辑
  1. #新建一个aliens列表
  2. aliens=[]
  3. #aliens中生成5个元素,这里的元素是字典
  4. for alien_num in range(0,5):
  5.     alien={
  6.         'color':'green',
  7.         'point':5,
  8.         'speed':'slow'
  9.         }
  10.     aliens.append(alien)
  11. #判断列表中的前三个字典,颜色键是否为绿色,是的话更改其字典的键值
  12. for alien_change in aliens[0:3]:
  13.     if alien_change['color']=='green':
  14.         alien_change['color']='yellow'
  15.         alien_change['point']=10
  16.         alien_change['speed']='medium'
  17. #输出aliens列表  
  18. for alien in aliens[:5]:
  19.     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的值产生影响呢:万分感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-5 23:04:11 | 显示全部楼层
alien_change 只是接受aliens键的容器
小甲鱼最新课程 -> https://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产生变化呢?
帮忙解答一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

还是说alien_change,当做容器看待,容器变化了,会将值反赋值给aliens,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 08:11:28 | 显示全部楼层
  1. # 新建一个aliens列表
  2. aliens = []
  3. # aliens中生成5个元素,这里的元素是字典
  4. for alien_num in range(0, 5):
  5.     alien = {
  6.         'color': 'green',
  7.         'point': 5,
  8.         'speed': 'slow'
  9.     }
  10.     aliens.append(alien)
  11. # 判断列表中的前三个字典,颜色键是否为绿色,是的话更改其字典的键值
  12. for alien_change in aliens[0:3]:
  13.     alien_change = alien_change.copy()    # 拷贝
  14.     if alien_change['color'] == 'green':
  15.         alien_change['color'] = 'yellow'
  16.         alien_change['point'] = 10
  17.         alien_change['speed'] = 'medium'
  18. # 输出aliens列表
  19. for alien in aliens[:5]:
  20.     print(alien)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

是的,他只是遍历一下 alien_change 可以随便换其他的值都可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我也是小白,可以加个好友吗 共同学习  v 19800326887
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的,您的回答解决了我的疑问,十分感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

多谢您的解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的!不客气!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 06:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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