python 8 字典

一、三目运算符

1)单目运算符:not
2)双目运算符: +、-、*、··· 、>、<、and、or.

即提供两个对象来判断

3)三目运算符
  • c语言的三目运算符

    • 语法:表达式1?表达式2:表达式3 ----判断表达式1的值是否为真,如果为真,整个运算结果就是第2个表达式,如果为假,整个运算结果就是第三个表达式。
  • python的三目运算符 :if else

    • 语法:表达式2 if 表达式1 else 表达式3------先判断表达式1是否成立,如果为true ,整个运算结果就是第表达式2 的值,如果是false,整个运算结果就是表达式3的值。

      score = 90
      print('优秀' if score > 85  else '不优秀')
      ##
      优秀
      

二、字典

1.认识字典

举例:定义一个变量,保存学生的信息

方法1:使用列表

stu1=['明明','19','男','179','78','89','94']
print(stu1[0],stu1[-3])
##运行结果
明明 78
总结:使用列表可以保存学生的信息,但是,当所保存的的数据类型较多时,易不清楚数据是哪些内容。

方法2 :使用字典

stu2{'name':'明','age':29,'gender':'男','height':189,'chinese':89,'math':99,'English':90}
print(stu2['name'],stu2['age'])
##
明明 29
字典的好处就是在保存数据时,可以加个键,对数据进行区分。如果要保存多个意义不同的数据,就用字典

2. 什么是字典

  • 字典的类型:dict

  • 字典定义:字典是容器型数据类型,将{ }作为容器的标准,里面的每个键值对用逗号隔开:{键1:值1,键2:值2,键3:值3,···,}

  • 字典的特点:字典是可变的,无序的;可变即支持增删改操作,无序即不支持下标操作。

    class1={'name':'lily','age':'10','height':168}
    class2={'age':'10','name':'lily','height':168}
    print(class1==class2)  #说明字典是无序的
    #True
    class2['age']=20
    print(class2)
    ##
    {'age': 20, 'name': 'lily', 'height': 168}
    #年龄修改为20
    
  • 字典的元素:键值对

    • 键的要求:a.必须是不可变类型的数据 ,b.必须是唯一的

    • 值的要求:无要求,即任何类型的数据都可以作为值

class1={'name':'lily','age':'10','height':168,[12,90]:'yes'}
print(class1)   # #键的类型必须是不可变的数据,否则报错TypeError: unhashable type: 'list'
class2={'name':'lily','age':10,'height':168,'[12,90]':'jsidhv','age':9}
print(class2)
#{'name': 'lily', 'age': 9, 'height': 168, '[12,90]': 'jsidhv'}

3. 空字典

  • dict1={ }

    dict1={}
    print(type(dict1),len(dict1))   #<class 'dict'> 0
    

4. 字典的查

1)查单个
查单个:获取字典某一个键对应的值。
写法:字典[键]、字典.get(键)、字典.get(键,默认值)
  • 字典[键]:获取字典中指定键对应的值,如果键不存在,会报错。

  • 字典.get(键):获取字典中指定键对应的值,如果键不存在,不会报错,并会显示None。

  • 字典.get(键,默认值):或取字典中指定键对应的值,如果键不存在,不会报错,会返回默认值。

    class1={'name':'lily','age':'10','height':168,'weight':50,'gender':'girl'}
    print(class1['weight'])
    print(class1.get('math'))
    print(class1.get('math',90))
    print[class1['math']]
    ##结果显示
    50
    None
    90
    #报错,KeyError: 'math'
    
2)遍历

有两种遍历方法:

  • 方法1

    for x in 字典:

    ​ 循环体

    class1={'name':'lily','age':'10','height':168,'weight':50,'gender':'girl'}
    for x in class1:print(class[x])  #遍历到的是字典的键
    ##结果显示
    lily
    10
    168
    50
    girl
    
  • 方法2:

    for x,y in items(字典):

    ​ print(x,y)

    class1={'name':'lily','age':'10','height':168,'weight':50,'gender':'girl'}
    for x,y  in class1.items():print(x,y)
    ##结果显示
    name lily
    age 10
    height 168
    weight 50
    gender girl
    

5. 字典的增删改查

1)改:修改键的值
  • 字典[键]=新值 : 将字典中指定键对应的值修改成指定的新值。

    class1={'name':'lily','age':'10','height':168,'weight':50,'gender':'girl'}
    class1['name']='lucy'
    print(class1)
    ##结果显示
    {'name': 'lucy', 'age': '10', 'height': 168, 'weight': 50, 'gender': 'girl'}
    
2)增

增有两种方法

方法1
  • 字典[键]= ‘值’ :如果不存在,就在字典中添加键值对,如果键存在,会修改原来的值。
方法2
  • 字典.setdefault(键,值) :在字典中添加指定的键值对。如果键存在,会保留原来的值(不会修改)

    A={'name': 'lucy', 'age': '10', 'height': 168, 'weight': 50, 'gender': 'girl'}
    A['tel']='123456'
    print(A)
    ##结果显示
    #{'name': 'lucy', 'age': '10', 'height': 168, 'weight': 50, 'gender': 'girl', 'tel': '123456'}
    A.setdefault('tel','2345678')
    print(A)
    ##结果显示
    {'name': 'lucy', 'age': '10', 'height': 168, 'weight': 50, 'gender': 'girl', 'tel': '123456'}
    
3)删

字典里面有两个删除方法

  • del 字典(键) :删除字典中指定键的值

  • 字典.pop(键) :取出字典中指定键值对.

    A={'name': 'lucy', 'age': '10', 'height': 168, 'weight': 50, 'gender': 'girl'}
    del A['name']
    print(A)
    A.pop('height')
    print(A)
    ##结果显示
    {'age': '10', 'height': 168, 'weight': 50, 'gender': 'girl'}  #删除'name':lucy
    {'age': '10', 'weight': 50, 'gender': 'girl'}  #删除'height':168
    

6.字典的相关操作

字典中不支持+、-、*、>、<、>=、<=这些运算。

1)in 和 not in
  • 键 in 字典:用来判断键字典中是不是存在这个键。
  • 键 not in 字典:用来判断键是不是不存在这个字典中
2) 相关函数
  • len、dict

    • len( 字典) :获取字典中键值对的数据

    • dict(数据) : 将指定数据转换成字典

    • 可以转换成字典的要求:

      a. 数据本身是一个序列

      b.序列中的元素必须有且只有两个元素的小序列

      c. 小序列中的第一个元素必须是不可变的类型的数据。

      A={'name': 'lucy', 'age': '10', 'height': 168, 'weight': 50, 'gender': 'girl'}
      print(len(A))
      print(dict(['sc','cd','kl']))
      B=dict([('name','Tom'),('age',2),('height',12)])
      print(B)
      ##运行结果
      {'s': 'c', 'c': 'd', 'k': 'l'}
      {'name': 'Tom', 'age': 2, 'height': 12}
      
  • 相关方法:字典.xxx( )

    • 1)字典.clear( ) : 清空字典

    • 2)字典.copy( ) :复制产生一个一模一样的字典

    • 3)字典.key( ): 获取所有的键,返回一个序列

      字典.value( ) : 获取字典所有的值,返回一个序列

      字典.item( ) :将字典转成序列,并且将每一个键值对转换成一个元组。

    • 4)字典1.update(字典2 ) :将字典2中所有键值对都添加到字典1中。

day8 字典作业!

  1. 定义一个变量保存一个学生的信息,学生信心中包括:姓名、年龄、成绩(单科)、电话、性别

    A={'name':'张三','age':23,'math':'90','tel':'123456789','gender':'boy'}
    print(A)
    ##
    {'name': '张三', 'age': 23, 'math': '90', 'tel': '123456789', 'gender': 'boy'}
    
  2. 定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明) )

    1. 统计不及格学生的个数

    2. 打印不及格未成年学生的名字和对应的成绩

    3. 求所有男生的平均年龄

    4. 打印手机尾号是8的学生的名字

    5. 打印最高分和对应的学生的名字

    6. 删除性别不明的所有学生

    7. 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)

      A=[{'name':'张三','age':23,'music':'90','tel':'1234567896','gender':'boy'},
      {'name':'李四','age':19,'music':'56','tel':'2323433558','gender':'boy'},
      {'name':'花花','age':18,'music':'99','tel':'2344566668','gender':'girl'},
      {'name':'亮亮','age':40,'music':'45','tel':'8963576447','gender':'boy'},
      {'name':'颖颖','age':19,'music':'70','tel':'2389479058','gender':'N'},
      {'name':'乐乐','age':30,'music':'83','tel':'1234567892','gender':'boy'}]
      count = 0
      1.统计不及格学生的个数
      #方法1
      for x in A:if int(x['music']) < 60:count += 1
      print(count)
      #方法2
      B=[ x['music'] for x in A if int(x['music'])<60]
      print(len(B))
      2.打印不及格未成年学生的名字和对应的成绩
      for x in A:if int(x['music']) < 60:print(x['name'],x['music'])
      ##结果显示
      李四 56
      亮亮 45
      3.求所有男生的平均年龄
      count = 0
      sum_age = 0
      for x in A:if x['gender']=='boy':sum_age +=int(x['age'])count += 1
      print((sum_age)/count)
      ##  结果显示
      28.0
      4.打印手机尾号是8的学生的名字
      for z in A:if int(z['tel']) % 10 == 8:print(z['name'])
      ##结果显示
      李四
      花花
      颖颖
      5.打印最高分和对应的学生的名字
      a=int(A[1]['music'])
      for x in range(len(A)):if int(x['music'])> aa=int(x['music'])
      print(x['music'],x['name'])6.删除性别不明的所有学生
      B = []
      for x in A:if x['gender'] == 'boy' or x['gender'] == 'girl':B.append(x)
      print(B)
      ##结果显示
      [{'name': '张三', 'age': 23, 'music': '90', 'tel': '1234567896', 'gender': 'boy'}, {'name': '李四', 'age': 19, 'music': '56', 'tel': '2323433558', 'gender': 'boy'}, {'name': '花花', 'age': 18, 'music': '99', 'tel': '2344566668', 'gender': 'girl'}, {'name': '亮亮', 'age': 40, 'music': '45', 'tel': '8963576447', 'gender': 'boy'}, {'name': '乐乐', 'age': 30, 'music': '83', 'tel': '1234567892', 'gender': 'boy'}]
      7.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
      A=[{'name':'张三','age':23,'music':'90','tel':'1234567896','gender':'boy'},
      {'name':'李四','age':19,'music':'56','tel':'2323433558','gender':'boy'},
      {'name':'花花','age':18,'music':'99','tel':'2344566668','gender':'girl'},
      {'name':'亮亮','age':40,'music':'45','tel':'8963576447','gender':'boy'},
      {'name':'颖颖','age':19,'music':'70','tel':'2389479058','gender':'N'},
      {'name':'乐乐','age':30,'music':'83','tel':'1234567892','gender':'boy'}]
      for x,y in  enumerate(A):if y['music']
  3. 定义一个变量保存一个班级的信息,班级信息中包括:班级名称、教室位置、班主任信息、讲师信息、班级所有的学生(根据实际情况确定数据类型和具体信息)

    class2204={'class_name':'2204','location':'fifteen','class_teacher':{'name':'Jing','tel':'12345678','gender':'girl'},'lecturer':{'name':'Ting','age':18,'address':'pidu'},'stu':{'stu1':{'name':'AA','tel':'76543222','gender':'girl'},'stu2':{'name':'bb','tel':'76543345','gender':'boy'},'stu3':{'name':'CC','tel':'5432234','gender':'girl'},'stu4':{'name':'DD','tel':'1245667','gender':'boy'},}
    
  4. 已知一个列表保存了多个狗对应的字典:

    dogs = [{'name': '贝贝', 'color': '白色', 'breed': '银狐', 'age': 3, 'gender': '母'},{'name': '花花', 'color': '灰色', 'breed': '法斗', 'age': 2},{'name': '财财', 'color': '黑色', 'breed': '土狗', 'age': 5, 'gender': '公'},{'name': '包子', 'color': '黄色', 'breed': '哈士奇', 'age': 1},{'name': '可乐', 'color': '白色', 'breed': '银狐', 'age': 2},{'name': '旺财', 'color': '黄色', 'breed': '土狗', 'age': 2, 'gender': '母'}
    ]
    
    1. 利用列表推导式获取所有狗的品种

      [‘银狐’, ‘法斗’, ‘土狗’, ‘哈士奇’, ‘银狐’, ‘土狗’]

      dogs = [{'name':'贝贝','color':'白色','breed':'银狐','age':3,'gender':'母'},{'name':'花花','color':'灰色','breed':'法斗','age':2},{'name':'财财','color':'黑色','breed':'土狗','age':5,'gender':'公'},{'name':'包子','color':'黄色','breed':'哈士奇','age':1},{'name':'可乐','color': '白色','breed':'银狐','age':2},{'name':'旺财','color':'黄色','breed':'土狗','age':2,'gender':'母'}]
      B=[x['breed'] for x in dogs]
      print(B)
      ##结果显示
      ['银狐', '法斗', '土狗', '哈士奇', '银狐', '土狗']
      
    2. 利用列表推导式获取所有白色狗的名字

      [‘贝贝’, ‘可乐’]

      dogs = [{'name':'贝贝','color':'白色','breed':'银狐','age':3,'gender':'母'},{'name':'花花','color':'灰色','breed':'法斗','age':2},{'name':'财财','color':'黑色','breed':'土狗','age':5,'gender':'公'},{'name':'包子','color':'黄色','breed':'哈士奇','age':1},{'name':'可乐','color': '白色','breed':'银狐','age':2},{'name':'旺财','color':'黄色','breed':'土狗','age':2,'gender':'母'}]
      C=[x['name'] for x in dogs if x['color'] == '白色']
      print(C)
      ##结果显示
      ['贝贝', '可乐']
      
    3. 给dogs中没有性别的狗添加性别为 ‘公’

      dogs = [{'name':'贝贝','color':'白色','breed':'银狐','age':3,'gender':'母'},{'name':'花花','color':'灰色','breed':'法斗','age':2},{'name':'财财','color':'黑色','breed':'土狗','age':5,'gender':'公'},{'name':'包子','color':'黄色','breed':'哈士奇','age':1},{'name':'可乐','color': '白色','breed':'银狐','age':2},{'name':'旺财','color':'黄色','breed':'土狗','age':2,'gender':'母'}]
      for x in dogs:x.setdefault('gender','公')
      print(dogs)
      ## 结果显示
      [{'name': '贝贝', 'color': '白色', 'breed': '银狐', 'age': 3, 'gender': '母'}, {'name': '花花', 'color': '灰色', 'breed': '法斗', 'age': 2, 'gender': '公'}, {'name': '财财', 'color': '黑色', 'breed': '土狗', 'age': 5, 'gender': '公'}, {'name': '包子', 'color': '黄色', 'breed': '哈士奇', 'age': 1, 'gender': '公'}, {'name': '可乐', 'color': '白色', 'breed': '银狐', 'age': 2, 'gender': '公'}, {'name': '旺财', 'color': '黄色', 'breed': '土狗', 'age': 2, 'gender': '母'}]
      
    4. 统计 ‘银狐’ 的数量

      dogs = [{'name':'贝贝','color':'白色','breed':'银狐','age':3,'gender':'母'},{'name':'花花','color':'灰色','breed':'法斗','age':2},{'name':'财财','color':'黑色','breed':'土狗','age':5,'gender':'公'},{'name':'包子','color':'黄色','breed':'哈士奇','age':1},{'name':'可乐','color': '白色','breed':'银狐','age':2},{'name':'旺财','color':'黄色','breed':'土狗','age':2,'gender':'母'}]
      B=[x['breed'] for x in dogs if  x['breed']=='银狐']
      print(len(B))
      ## 结果显示
      2
      

python 8 字典相关推荐

  1. python 判断字典是否包含某个key,以及对应的value 值

    python 判断字典是否包含某个key 可以使用 in 来判断 具体如下: num = {"a": 1, "b": 2, "c": 3} ...

  2. python嵌套字典取值_python嵌套字典比较值与取值的实现示例

    python嵌套字典比较值与取值的实现示例 本文通过示例给大家介绍了python嵌套字典比较值,取值,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 示例代码 #取值import t ...

  3. python实现字典遍历稳定有序使用collection包OrderedDict

    python实现字典遍历稳定有序使用collection包OrderedDict **注意虽然python3.6之后,dict本身也会保留插入的顺序,但是并不是严格保证的: Python3.6中的字典 ...

  4. python 遍历字典

    python 遍历字典 d = {'a': 1, 'b': 2, 'c': 3, 4: 'd', 5: 'e'} for key in d:print(key, ":", d[ke ...

  5. python字典怎么排序_如何对python的字典进行排序

    我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value ...

  6. 如何在Python中将字典键作为列表返回?

    本文翻译自:How to return dictionary keys as a list in Python? In Python 2.7 , I could get dictionary keys ...

  7. python 对字典排序

    工作中经常需要对python的字典进行排序,下面就简单介绍一下如何对字典排序: 使用sorted命令,默认进行从大到小字母序排序: >>> from operator import ...

  8. python中字典按键或键值排序

    字典排序 在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的.因此,为了使统计得到的结果更方便查看需要进行排序.Python中字典的排序分为按"键"排 ...

  9. python中字典和集合的区别_Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...

  10. Python遍历字典的方法

    python的字典由两部分组成. key(键),value(值) 创建个字典 dict1 = {"name":"test1","year": ...

最新文章

  1. Android之对资源图片进行比例缩放
  2. Equinix 位于伦敦的LD8数据中心发生严重故障
  3. 【bzoj4372】烁烁的游戏 动态点分治+线段树
  4. js编写简易返回顶部按钮
  5. 图解MapReduceMapReduce整体流程图
  6. c++两个vector合并_数据结构——算法初步(4)——合并排序算法
  7. Cissp全过程(简介到考试后)
  8. android adb shell 常用命令
  9. android点滴9:模拟器中如何输入中文
  10. CI控制器调用内部方法并载入相应模板的做法
  11. 创建mysql数据库远程工具连接及ER图工具mysqlWorkbench使用
  12. smarty capture使用
  13. C语言求S(n) = a+aa+aaa+aaaa+...+aa..a之值,其中a是一个数字,n表示a的位数例如:2+22+222+2222+22222(此时n=5),n和a都从键盘输入。...
  14. 用友NC总账辅助余额表与应收应付模块余额表对账技巧
  15. ​Debug如何引流(降龙十八掌)
  16. python椭圆拟合_椭圆拟合(python)
  17. 全球知名虚拟服务器,国外十大虚拟主机
  18. 设计项目全生命周期管理系统构建与实践
  19. 怎么关闭计算机右侧的硬盘预览,选择性关闭视频文件预览 给Win7硬盘CPU减压
  20. (程序员必备技能)基于Python的鼠标与键盘控制实战扩展与源码

热门文章

  1. Codeforces Round #545 (Div. 2) C. Skyscrapers
  2. Jzoj4699 Password
  3. 知识图谱:【图数据库Nebula(一)】——Nebula简介
  4. 计算机网络八大性能指标
  5. 签署您的应用——多渠道签名打包教程
  6. 【学数据结构】-----串(顺序串、堆串、块链串)(7000字总结+代码+图)
  7. Wed Aug 03 19:48:03 +0800 2022这种字符串,怎么转成时间格式年月日
  8. Samba————Linux与windows共享文件
  9. java.sql.SQLException: The server time zone value ' й ׼ʱ ' is unrecognized or represents more tha
  10. 关于k700c,t628键值的问题!