if练习-无法将key名称做修改(纯字典方式)

if练习-无法将key名称做修改(纯字典方式)

图片描述

# 字典
student = {
    'test': {'age': 18,'count': 100},
    'xiaomu': {'age': 33,'count': 70},
    'xiaoming': {'age': 10,'count': 10}
}

xiaoming = ['xiaoming',22,99]
if xiaoming[0] in student:
    xiaoming[0] = '%s_new' % xiaoming[0]
else:
    student[xiaoming[0]] = {'age':xiaoming[1],'count':xiaoming[2]}
print(student)

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,同学的代码已经实现了对字典的修改,实际上字典中的key是不能直接修改的,同学的代码实际上是为字典中增加了新的元素xiaoming_new,值的内容和xiaoming是一样的

http://img1.sycdn.imooc.com//climg/5f9d0f3c090bc3f811440093.jpg

如果同学再将字典中的xiaoming元素删除,也就可以看成是xiaoming_new取代了​xiaoming,但实际过程是新增一个元素、删除一个元素

加油,祝学习愉快~~~


好帮手慕小轩 2020-10-29 15:27:41

同学,你好,

    1,xiaoming = ['xiaoming',22,99]是列表的形式,在判断的时候,直接修改了列表里面第一个元素的值,并没有修改字典。    
    ​2,使用for循环把字典遍历一下,输出里面所有的键,使用if判断,判断一下xiaoming[0]是否等于字典里面的键,如果相等,则给它修改一个新的键名称,并且把已存在字典里面的xiaoming的键删除。
http://img1.sycdn.imooc.com//climg/5f9a6aa0097d77ec16490710.jpg

  • 提问者 慕妹2362023 #1
    前面的key='%s_new' 看明白了,但是你下面删除原来的key。 直接使用 student.pop(xiaoming) 不就好了嘛? 为什么要多 加一条 student[key] = student.pop(xiaoming)
    2020-10-29 17:56:40
  • 好帮手慕小轩 回复 提问者 慕妹2362023 #2
    同学,你好,key为修改后的值xiaoming_new,要给key赋值为原key对应的值,pop可以得到移除key的value值。从而实现修改student的key的功能
    2020-10-29 18:18:22
  • 提问者 慕妹2362023 回复 好帮手慕小轩 #3
    这个是我重新写的代码,老师你看看行不行: student = { 'test': {'age': 18,'count': 100}, 'xiaomu': {'age': 33,'count': 70}, 'xiaoming': {'age': 10,'count': 10} } xiaoming = ['xiaoming',22,99] if xiaoming[0] in student: # 检查小明列表0索引的名称是否存在student字典 key = '%s_new' % (xiaoming[0]) # 如果存在则将key初始化为 xiaoming_new else: key = xiaoming[0] # 如果小明列表的0索引名称不存在student表则将key初始化为 xiaoming[0]索引 student[key] = {'age':xiaoming[1],'count':xiaoming[2]} # 为student添加新的key,value为列表中的1索引和2索引 print(student) # 最后打印字典
    2020-10-31 13:11:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师