python基础笔记5-字典

发布于:2022-12-22 ⋅ 阅读:(389) ⋅ 点赞:(0)

在这里插入图片描述

python内部的数据结构之一,与列表一样,是一个可变序列(可以进行增删改操作)

  • 以键值对方式存储数据(一对一对的存在)
  • 无序序列
  • 字典中储存的元素为键值对,key不可重复,value可重复
  • 字典中的key为不可变对象
  • 字典会浪费较大内存,是一种用空间换时间的数据结构(查询速度快,但浪费储存空间)

例:scores = { ' 张三 ' : 100 , ' 李四 ' : 80 , ...... }
scores:字典名
‘李四’:键,80:值(冒号之间的称为键,冒号之后的称为值)
每一对数据间用逗号隔开

实现原理

根据key(键)查找value(值)所在的位置(查找时先计算hash(key),这相当于找到索引)

字典的创建与删除

创建(2种方式)

  • 使用花括号{}
    scores = { ' 张三 ' : 100 , ' 李四 ' : 80 , ...... }
  • 使用内置函数dict()
    dict ( 张三 = 90 , 李四 = 90 , 王五='空' )
    其中,等号左边为键,右边为值,键不加引号,值加不加引号取决于值的类型
    空字典d={}

字典的常用操作

元素的获取

  • []
  • 使用get()
    区别:字典中不含指定的key时,[]抛出错误:KeyError,但get()返回None。
scores={'张三':90,'李四':77,'王五':99}
print(scores['张三'])#90
print(scores.get('张三'))#90
print(scores.get('陈六',101)) #101
#查询的值在字典中不存在,指定返回默认值101,若未指定默认值则返回None

键的判断

判断指定的键在字典中是否存在:使用in 或 not in

scores={'张三':90,'李四':77,'王五':99}
print('张三' in scores)#True 张三在字典中存在
print('张三' not in scores)#False 张三在字典中存在

删除

  • 删除指定键值对:del 字典名[键]
scores={'张三':90,'李四':77,'王五':99}
del scores['王五']
print(scores)#{'张三': 90, '李四': 77}
  • 清空字典元素:字典名 . clear ( )
scores={'张三':90,'李四':77,'王五':99}
scores.clear()
print(scores)#{}

新增和修改

  • 新增键值对:字典名 [ 要新增的键 ] = 值
scores={'张三':90,'李四':77,'王五':99}
scores['陈六']=98  #{'张三': 90, '李四': 77, '王五': 99, '陈六': 98}
print(scores)
  • 修改指定键的值:字典名 [ 要修改的键 ] = 新的值
scores={'张三':90,'李四':77,'王五':99}
scores['李四']=100  #{'张三': 90, '李四': 100, '王五': 99}
print(scores)

视图操作(获取字典视图的操作)

  • keys():获取字典中的所有key
  • values():获取字典中所有value
  • items():获取字典中所有key,value对(键值对)
#视图操作1:获取所有的键
keys=scores.keys()
print(keys,type(keys))
print(list(keys))#将获取的所有key组成的视图转为列表
#视图操作2:获取所有的值
values=scores.values()
print(values,type(values))
print(list(values))#将获取的所有value组成的视图转为列表
#视图操作3:获取所有
scores=scores.items()
print(scores,type(scores))
print(list(scores))#将获取的所有value组成的视图转为列表,转换之后的列表元素为元组

元素的遍历

  • 遍历所有的键
for item in scores : #scores:字典  item:字典中的键  
    print ( item ) #输出的值为字典中的所有键
  • 遍历键值对
for item in scores :  
    print ( item , scores[] ) #输出的值为字典中的所有键,值对
#	print( item , scores . get ( item ) )#输出的值为字典中的所有键,值对
for item in scores:
    #print(item)
    print(item,scores[item],scores.get(item))

在这里插入图片描述

字典生成式

  • 使用内置函数zip()
    语法结构:d={item:value for item,value in zip(item,value)}
    其中d为用户指定的字典名
    item:key的表达式
    value:value的表达式
    item.upper():key的表达式都大写
    for 后面的item,value为表示key和value的变量
item=['Alice','Bob','John']
value=[33,78,89,200,122]#value比key不相同时,以最小的那个为标准
d={item:value for item,value in zip(item,value)}
print(d)
d={item.upper():value for item,value in zip(item,value)}
print(d)

运行结果:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到