python的字典


前言

现实世界复杂的,更多数据更像字典数据形式,字典可以很好表达复杂一对多数据关系。


一、字典对比列表、元组

总结一下列表、元组等数据类型:
首先,列表list、元组tuple都是有序的一组数据,既然有有序也有无序,无序就用集合set和字典dict。
我把老师课件截图下来就很清楚了。
在这里插入图片描述

字典是一种映射关系由一对键和值组成数据集合类型。

字典的例子:药店的药品格子柜,每个格子都标上药名(键),格子里面存放着药品(值)。

二、字典

1.字典定义

字典定义:字典名={键:值},即dict={key:value}

dict1 = {'张三': 90, '李四': 100}
print(dict1)  # {'张三': 90, '李四': 100}
# 通过关键字访问[]或者get方法
print(dict1['张三'])  # 90
print(dict1.get('张三'))  # 90

2.[]取值与get取值的区别。

dict1 = {'张三': 90, '李四': 100}
# 当键值不存在时返回None
print(dict1.get('王五'))  # None
# 当键值不存在时程序报错KeyError
print(dict1['王五'])  # None

找不到键值,[]的方式直接报错,而get返回None。如果是要进行判断键是否存在用get方法避免直接报错。

3.字典的嵌套

嵌套就是字典的值位置放入字典。
下面把{‘身高’:180,‘体重’:160}充当’张三’关键字对应的值。

dict1 = {'张三': {'身高': 180, '体重': 160}}
print(dict1)
# {'张三': {'身高': 180, '体重': 160}}
print(dict1['张三']['身高'])  # 180
print(dict1.get('张三').get('身高'))  # 180

嵌套之后,访问数据可以通过[]来逐层访问,也可以使用get方法。

下面演示一个嵌套的字典访问。
第一层zhangsan是关键字,对应的值是一个字典{‘interest’:[‘a’,‘b’,‘c’]}
interest是次一级关键字,对应的值是一个列表[‘a’,‘b’,‘c’]

dict1={'zhangsan':{'interest':['a','b','c']}}
print(dict1)
#{'zhangsan': {'interest': ['a', 'b', 'c']}}
# 通过[]实现逐层访问。
print(dict1['zhangsan']['interest'])    #['a', 'b', 'c']
print(dict1['zhangsan']['interest'][0]) # a

嵌套使用使得字典数据类型可以很好对应现实情况,比如个人信息,就是很多数值结合在一起,既有一对一(比如:性别),也有一对多(比如:家庭成员)。

4.字典的增删改

dict1={'zhangsan':{'weight':160}}
#修改关键字zhangsan对应的值,把对应字典替换另外一个字典。
dict1['zhangsan']={'weight':150}
#修改关键字zhangsan对应的字典的weight关键对应的值
dict1['zhangsan']['weight']=140

#增和改句式都一样。
dict1['lisi']={'weight':120}
print(dict1)
#{'zhangsan': {'weight': 140}, 'lisi': {'weight': 120}}

#删
del dict1['lisi']
print(dict1)
#{'zhangsan': {'weight': 140}}

5.字典的循环遍历

dict.keys()返回关键字列表
dict.values()返回值列表
dict.items()返回关键和值列表
# 张三、李四、赵五的体重
dict1={'zhangsan':60,'lisi':80,'zhaowu':100}
key1=dict1.keys()
value1=dict1.values()
item1=dict1.items()
print(key1)
print(value1)
print(item1)

#dict_keys(['zhangsan', 'lisi', 'zhaowu'])
#dict_values([60, 80, 100])
#dict_items([('zhangsan', 60), ('lisi', 80), ('zhaowu', 100)])

遍历keys()、values()、items()

# 张三、李四、赵五的体重
dict1={'zhangsan':60,'lisi':80,'zhaowu':100}
#遍历关键字
for key in dict1.keys():
    print(key,end=" ")       #zhangsan lisi zhaowu
print()
#遍历值
for value in dict1.values():
    print(value ,end=" ")    #60 80 100
print()
#遍历关键字和值
for key,value in dict1.items():
	print('key=',key,' value =',value)
#key= zhangsan  value = 60
#key= lisi  value = 80
#key= zhaowu  value = 100

总结

字典是一对一的对应关系的数据,配合嵌套使用,可以表达一些一对多的组合信息。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值