当前位置: 首页 > news >正文

Python——字典

  • 列表与元组都是通过索引下标来获取元素值,而字典则是通过键来获取元素值。
  • 字典是一种存储键值对的
  • 一个字典中的key的类型不一定都一样;
  • 一个字典中的value的类型也不必都一样;
  • 字典对于key的类型有约束,对于value没约束;

1.创建字典

a = {}

b = dict()

# 创建同时设置初始值
c = {'id':1,'name':'zhang'}

# 书写可以使用多行方式,好看,最后一个键值对的,可写可不写
d = {
	'id':1,
	'name':'zhang'
}

2.查找字典

  • 使用in/not in查找key是否在字典中(in只是判定key是否存在,与value无关)
a = {
	'id':1,
	'name':'sxl'
}
print('id' in a)  # True
print('n' in a)  # False

print('sxl' in a)  # False
print('sxl' not in a)  # True
  • 使用[ ]根据key获取value
a = {
	'id':1,
	'name':'sxl',
	100:'成绩'
}
print(a['id'])  # 1

注意:对于字典来说,使用in或者[ ]来获取value是比较高效(字典使用了哈希);对于列表来说,使用in比较低效(把整个列表遍历一遍),[ ]较高效

  • get取值
    get可以取字典里不存在的键,默认返回None值,并且可以提前设置一个默认值
a = {
	'id':1,
	'name':'sxl',
	100:'成绩'
}
print(a.get('id'))  # 1
print(a.get(1))  # None
print(a.get(2,100))  # 100

3.新增/修改元素

  • key存在,则根据key修改value
  • key不存在,则相当于新增键值对
a = {
	'id':1,
	'name':'sxl',
	100:'成绩'
}

# 插入新的键值对
a['score'] = 90
print(a)

# 修改value
a['score'] = 99  
print(a)
  • 更新字典
d = {
	'k1': 11, 
	2: 22, 
	True: 33, 
	None: 44, 
	3.14: 55
}
d.update({'k1': 1111, 'k3': 33})
print('更新集合后的字典 => ', d)  # {'k1': 1111, 2: 22, True: 33, None: 44, 3.14: 55, 'k2': 222, 'k3':
33}

t1 = d.pop(2)
print('弹出键为2的元素后的字典 => ', d) # {'k1': 1111, True: 33, None: 44, 3.14: 55, 'k2': 222, 'k3':
33}

t2 = d.popitem()
print('弹出一个键值对后的字典 => ', d)  # {'k1': 1111, True: 33, None: 44, 3.14: 55, 'k2': 222}
print('弹出的键值对 => ', t2)  # ('k3', 33)

d.clear()
print('清空字典内容 => ', d)  # {}

4.删除字典

  • pop删除
a = {
	'id':1,
	'name':'sxl',
	100:'成绩'
}
# 删除字典
a.pop('name')   # {'id':1,100:'成绩'}
print(a)
  • popitem从末尾开始删除一个字典
a = {
	'id':1,
	'name':'sxl',
	100:'成绩'
}
# 删除字典
a1 = a.popitem()   
print(a)   # {'id':1,'name':'sxl'}
print(a1)  # (100,'成绩') 以元组形式
  • del删除
a = {
	'id':1,
	'name':'sxl',
	100:'成绩'
}
# 删除字典
del a[100]  
print(a)   # {'id':1,'name':'sxl'}

5.字典的遍历

  • 使用for循环
a = {
	'id':1,
	'name':'sxl',
	100:'成绩'
}
for key in a:
	print(key,a[key])

  • keys获取key
    注意:keys获取到字典中所有的key;values获取到字典中所有的value;items获取到字典中所有键值对
a = {
	'id':1,
	'name':'sxl',
	100:'成绩'
}
print(a.keys())  # dict_keys(['id','name',100])  自定义的类型,可当作列表使用
print(a.values())  # dict_values([1,'sxl','成绩'])
print(a.items())   # dict_items([('id',1),('name','sxl'),(100,'成绩')])  列表一样的结果,每个元素又是一个元组,元组里面包含键和值
for key,value in a.items():
	print(key,value)  
	# id 1
	# name sxl
	# 100 成绩

6.合法key类型

python提供一个hash函数打印hash值

print(hash(0))     # 整型
print(hash(3.14))   # 浮点
print(hash('sxl'))  # 字符串
print(hash(True))   # 布尔
print(hash((1,2,3)))  # 计算元组

不能hash的类型:列表、字典
结论:不可变的对象一般可哈希,可变的对象一般不可哈希

相关文章:

  • 机器学习必会面试知识点
  • C#基于ASP.NET的人事薪资管理系统
  • 上传项目代码到Github|Gitee
  • 中小企业OA系统的设计与实现
  • 直播弹幕系统(二)- 整合RabbitMQ进行消息广播和异步处理
  • NR RedCap UE关键技术与标准化进展
  • CARIS11.4基本使用流程及其bug
  • 我用了几行代码就实现了界面变灰效果
  • [附源码]Python计算机毕业设计Django教育企业网站
  • App 黑白化技术实践
  • 网络安全常用的工具有哪些(二)
  • 所谓工作能力强,其实就这五点
  • Linux||后续1:Ubuntu20.04安装MySQL8.0纯命令图文教程(安装+排错+可视化工具+常用命令)
  • JAVA实训第四天
  • 【数据结构】八大排序算法详解
  • Qt / Qml 中捕获(中文)输入法事件(按下 提交)
  • pytorch实现运动鞋分类
  • C语言画贝塞尔曲线的函数
  • 电脑重装系统后卡顿怎么办?教你快速解决电脑卡顿问题
  • 2022,itbird的年终总结报告
  • 俄外长:俄将在不损害伙伴关系前提下发展对美关系
  • 文化润疆|让新疆青少年成为“小小博物家”
  • 一场与纪录并行的伦敦马拉松,超40项新世界纪录诞生
  • 特朗普的百日执政支持率与他“一税解千愁”的世界观和方法论
  • 脱发后怎么把头发养回来?脱发自救指南来了
  • 应勇:以法治力量服务黄河流域生态保护和高质量发展