四、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的类型:列表、字典
结论:不可变的对象一般可哈希,可变的对象一般不可哈希

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值