一、字典的定义
我们使用汉字字典的时候,先找到这个字,翻到对应的页码,就可以看到关于这个字的解释。
Python中的字典和生活中的字典十分类似:
通过任意键信息查找一组数据中的值信息的过程叫映射,python中通过字典实现映射。
字典是包含0个或多个键值对的集合,无长度限制。(每一个元素是一个键值对)
字典通过大括号{}建立,Key:Value称为1个键值对,Key和Value可以是任意类型的数据(Key不可为字典,且不可重复),键和值通过冒号连接,不同键值对之间通过逗号隔开。
#定义字典字面量
{'中国':'北京','美国':'纽约','英国':'伦敦'}
#定义字典变量
my_dict1={'中国':'北京','美国':'纽约','英国':'伦敦'}
#定义空字典
my_dict2={} #方式1
my_dict3=dict() #方式2
print(my_dict1)
print(type(my_dict1))
print(my_dict2)
print(type(my_dict2))
print(my_dict3)
print(type(my_dict3))
输出:
{'中国': '北京', '美国': '纽约', '英国': '伦敦'}
<class 'dict'>
{}
<class 'dict'>
{}
<class 'dict'>
二、字典数据的访问
字典同集合一样,不能使用下标索引,但是字典可以通过Key值来取得对应的Value,语法:字典[key],如下列代码所示:
#可以通过名字获取其爱吃的食物信息
dict1={'加菲猫':'千层面','欧迪':'披萨','乔恩':'三明治'}
print(dict1['加菲猫'])
print(dict1['欧迪'])
print(dict1['乔恩'])
输出:
千层面
披萨
三明治
如果有重复的Key值,会覆盖原有数据,如下所示:
#可以通过名字获取其爱吃的食物信息
dict2={'加菲猫':'千层面','欧迪':'披萨','乔恩':'三明治','加菲猫':'蛋糕'}
print(dict2['加菲猫'])
print(dict2['欧迪'])
print(dict2['乔恩'])
输出:
蛋糕
披萨
三明治
如果加菲猫、欧迪、乔恩三餐食物不同呢?
可以通过字典嵌套:
dict1={'加菲猫':{
'早餐':'三明治',
'午餐':'披萨',
'晚餐':'千层面'
},'欧迪':{
'早餐':'三明治',
'午餐':'意大利面',
'晚餐':'蛋糕'
},'乔恩':{
'早餐':'牛奶麦片',
'午餐':'披萨',
'晚餐':'苹果派'
}}
print(dict1['加菲猫']['早餐'])
print(dict1['欧迪']['午餐'])
print(dict1['乔恩']['晚餐'])
输出:
三明治
意大利面
苹果派
三、字典的方法
3.1增加元素
语法:字典[Key] = Value
功能:新增元素
具体应用:
dict3={'静夜思':'李白','江雪':'柳宗元','征人怨':'柳中庸','夜雨寄北':'李商隐'}
print(dict3)
dict3['终南别业']='王维'
print(dict3)
输出:
{'静夜思': '李白', '江雪': '柳宗元', '征人怨': '柳中庸', '夜雨寄北': '李商隐'}
{'静夜思': '李白', '江雪': '柳宗元', '征人怨': '柳中庸', '夜雨寄北': '李商隐', '终南别业': '王维'}
3.2更改元素
语法:字典[Key] = Value
功能:修改字典,更新元素
具体应用:
#加菲猫爱吃的食物变成蛋糕
dict2={'加菲猫':'千层面','欧迪':'披萨','乔恩':'三明治'}
print(dict2)
dict2['加菲猫']='蛋糕'
print(dict2)
输出:
{'加菲猫': '千层面', '欧迪': '披萨', '乔恩': '三明治'}
{'加菲猫': '蛋糕', '欧迪': '披萨', '乔恩': '三明治'}
注意:字典Key不可以重复,所以对已存在的Key执行上述操作,就是更新Value值。
3.3删除元素
语法:字典.pop(Key)
功能:删除指定的Key及其Value
具体应用:
dict3={'静夜思':'李白','江雪':'柳宗元','征人怨':'柳中庸','夜雨寄北':'李商隐'}
print(dict3)
dict3.pop('江雪')
print(dict3)
输出:
{'静夜思': '李白', '江雪': '柳宗元', '征人怨': '柳中庸', '夜雨寄北': '李商隐'}
{'静夜思': '李白', '征人怨': '柳中庸', '夜雨寄北': '李商隐'}
3.4清空元素
语法:字典.clear()
功能:字典内的元素被清空,变为空字典
具体应用:
dict3={'静夜思':'李白','江雪':'柳宗元','征人怨':'柳中庸','夜雨寄北':'李商隐'}
print(dict3)
dict3.clear()
print(dict3)
输出:
{'静夜思': '李白', '江雪': '柳宗元', '征人怨': '柳中庸', '夜雨寄北': '李商隐'}
{}
3.5获取全部key
语法:字典.keys()
功能:得到字典中的全部Key
具体应用:
dict2={'加菲猫':'千层面','欧迪':'披萨','乔恩':'三明治'}
keys=dict2.keys()
print(keys)
输出:
dict_keys(['加菲猫', '欧迪', '乔恩'])
3.6统计字典内的元素(键值对)数量
语法:len(字典)
功能:得到字典内元素(键值对)的数量
具体应用:
dict2={'加菲猫':'千层面','欧迪':'披萨','乔恩':'三明治'}
num=len(dict2)
print(f"字典内元素数量为:{num}")
输出:
字典内元素数量为:3
四、字典的遍历
字典不支持下标索引,所以同集合一样,不可以用while循环遍历,但是可以运用3.5获取全部key功能进行for循环遍历。
dict3={'静夜思':'李白','江雪':'柳宗元','征人怨':'柳中庸','夜雨寄北':'李商隐'}
#方式1
for key in dict3.keys():
print(f"作品为{key},作者为{dict3[key]}")
#方式2
keys=dict3.keys()
for key in keys:
print(f"作品为{key},作者为{dict3[key]}")
方式1和方式2的输出相同:
作品为静夜思,作者为李白
作品为江雪,作者为柳宗元
作品为征人怨,作者为柳中庸
作品为夜雨寄北,作者为李商隐
五、字典的特点
- 可以容纳多个不同类型的数据
- 每一份数据是Key:Value键值对
- 可以通过Key获取到Value,Key不可重复(重复会覆盖)
- 不支持下标索引 (支持for循环,不支持while循环)
- 可以修改(可以增加、删除、更新元素)