鱼C论坛

 找回密码
 立即注册
查看: 678|回复: 14

[已解决]字典问题

[复制链接]
发表于 2018-12-2 22:41:06 | 显示全部楼层 |阅读模式

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

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

x
list1 = [{'name':'G','age':9},{'name':'H','age':7}]
#比如我现在列表里面有两个字典储存信息
我要实现可以通过 name这个键的值来更改 age这个键的值的内容

比如 我输入G,然后就可以把9修改成别的
最佳答案
2018-12-2 22:56:54
本帖最后由 凌九霄 于 2018-12-2 22:59 编辑

能做,但个人觉得没什么必要
  1. list1 = [ {'name': 'G', 'age': 9}, {'name': 'H', 'age': 7} ]

  2. s = input('Please input name:')
  3. for i in list1:
  4.     if i[ 'name' ] == s:
  5.         t = input('Please input age:')
  6.         i[ 'age' ] = int(t)
  7.         print(list1)
  8.         break
  9.     elif i == list1[-1]:
  10.         print('no finded name:' + s)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-2 22:48:06 | 显示全部楼层
如果仅存放姓名和年龄,直接用
dict1 = {'G': 9, ‘H': 7}就行了。
如果是
list1 = [{'name':'G','age':9},{'name':'H','age':7}]只能用循环低效率的去找。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 22:56:54 | 显示全部楼层    本楼为最佳答案   
本帖最后由 凌九霄 于 2018-12-2 22:59 编辑

能做,但个人觉得没什么必要
  1. list1 = [ {'name': 'G', 'age': 9}, {'name': 'H', 'age': 7} ]

  2. s = input('Please input name:')
  3. for i in list1:
  4.     if i[ 'name' ] == s:
  5.         t = input('Please input age:')
  6.         i[ 'age' ] = int(t)
  7.         print(list1)
  8.         break
  9.     elif i == list1[-1]:
  10.         print('no finded name:' + s)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 22:57:59 | 显示全部楼层
冬雪雪冬 发表于 2018-12-2 22:48
如果仅存放姓名和年龄,直接用
dict1 = {'G': 9, ‘H': 7}就行了。
如果是

嗯,大体就是一个学生信息管理,全体学生用一个列表装,每一个学生的资料(比如有手机号,年份,出生年月等等)用一个字典装;假设在输入某个学生的资料时不小心将手机号输入错误了,修改的话可以直接通过名字,然后修改手机号。
我原本是每个学生都有一个序号,修改直接输入序号将该同学全部信息重新输入。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 23:03:34 | 显示全部楼层
凌九霄 发表于 2018-12-2 22:56
能做,但个人觉得没什么必要

大一学生,原本我是每个学生都有一个类似的学号,修改就是直接输入学号然后所有信息修改一遍。
但是老师说希望能够用名字去更改学生信息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 23:05:22 | 显示全部楼层
人随世俗变 发表于 2018-12-2 22:57
嗯,大体就是一个学生信息管理,全体学生用一个列表装,每一个学生的资料(比如有手机号,年份,出生年月 ...

还是整体做出字典较好,如果没有重名用姓名做key,如果有重名,用学号做key
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 23:05:59 | 显示全部楼层
凌九霄 发表于 2018-12-2 22:56
能做,但个人觉得没什么必要
  1. elif i == list1[-1]:
  2.         print('no finded name:' + s)
复制代码

这一句不太理解用处
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 23:10:42 | 显示全部楼层
冬雪雪冬 发表于 2018-12-2 23:05
还是整体做出字典较好,如果没有重名用姓名做key,如果有重名,用学号做key

好的,谢谢,字典的用法我了解的太少了,现在我这个程序写起来虽然可以实现但是很混乱。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 23:12:26 | 显示全部楼层
学生管理系统吗??
最好还是利用学号命名为一个唯一的值比较好。  
也不会影响到用姓名进行检索。   
不推荐直接使用字典。
最好用数据库吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-12-2 23:20:24 | 显示全部楼层
wongyusing 发表于 2018-12-2 23:12
学生管理系统吗??
最好还是利用学号命名为一个唯一的值比较好。  
也不会影响到用姓名进行检索。   

现在还是大一刚开始学习,还没有涉及到数据库。
确实如果用名字的话会遇到很多的问题。
谢谢你的建议!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 23:25:23 | 显示全部楼层
人随世俗变 发表于 2018-12-2 23:05
这一句不太理解用处

这一句的意思就是一定要遍历完list中所有的元素后才输出没找到名字,假如里面有10条记录,你输入的name不存在,如果没有i == list1(-1)的限制,它会输出10次“no finded name”,如果你输入的name在第九个元素里,则会先输出8次“no finded name"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 23:29:48 | 显示全部楼层
凌九霄 发表于 2018-12-2 23:25
这一句的意思就是一定要遍历完list中所有的元素后才输出没找到名字,假如里面有10条记录,你输入的name不 ...

懂了,谢谢
  1.     del_stu = input('请输入需要删除的学生资料姓名:')
  2.     for i in list1:
  3.         if del_stu == i['name']:
  4.             del i
复制代码

我是否能通过这样将这个人的信息删除呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 23:33:05 | 显示全部楼层
人随世俗变 发表于 2018-12-2 23:29
懂了,谢谢

我是否能通过这样将这个人的信息删除呢?

可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-2 23:36:57 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2018-12-2 23:46:07 | 显示全部楼层

好像删除没效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 20:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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