字典
1,字典的定义
dictionary
(字典) 是除列表以外python
之中最灵活的数据类型- 字典同样可以用来存储多个数据
- 通常用于存储 描述一个物体的相关信息
- 和列表的区别
- 列表 是 有序 的对象集合
- 字典 是 无序 的对象集合
- 字典用
{}
花括号定义 - 字典使用 键值对 存储数据,键值对之间使用
,
分隔- 键
key
是索引 - 值
value
是数据 - 键 和 值 之间用
:
冒号分隔 - 键必须是唯一的
- 值 可以去任何数据类型,但是 键 只能使用字符串、数字或元组
- 键
Roronoa_Zoro_dict = {
"name": "罗罗诺亚·索隆",
"age": 19,
"gender": "male",
"height": 1.79,
"professional": "海贼猎人→草帽海贼团剑士",
"reward_gold": "3亿2000万贝里",
"dream": "成为世界第一的剑豪王"
}
print("罗罗诺亚·索隆名片: %s
" % Roronoa_Zoro_dict)
2,字典常用操作
- 在
ipython3
中定义一个元组,例如:info = ()
- 输入
Roronoa_Zoro_dict .
按下TAB
键,ipython
会提示 元组能够使用的函数如下:
In [1]: Roronoa_Zoro_dict = {
...: "name": "罗罗诺亚·索隆",
...: "age": 19,
...: "gender": "male",
...: "height": 1.79,
...: "professional": "海贼猎人→草帽海贼团剑士",
...: "reward_gold": "3亿2000万贝里",
...: "dream": "成为世界第一的剑豪王"
...: }
In [2]: Roronoa_Zoro_dict.
Roronoa_Zoro_dict.clear Roronoa_Zoro_dict.get Roronoa_Zoro_dict.pop Roronoa_Zoro_dict.update
Roronoa_Zoro_dict.copy Roronoa_Zoro_dict.items Roronoa_Zoro_dict.popitem Roronoa_Zoro_dict.values
Roronoa_Zoro_dict.fromkeys Roronoa_Zoro_dict.keys Roronoa_Zoro_dict.setdefault
1, 取值
Roronoa_Zoro_dict = {
"name": "罗罗诺亚·索隆",
"age": 19,
"gender": "male",
"height": 1.79,
"professional": "海贼猎人→草帽海贼团剑士",
"reward_gold": "3亿2000万贝里",
"dream": "成为世界第一的剑豪王"
}
print("罗罗诺亚·索隆名片: %s
" % Roronoa_Zoro_dict)
# 取值时,需通过key来取值,不可一次取多个key,如果key没有则报错
Roronoa_Zoro_name = Roronoa_Zoro_dict["name"]
print("姓名 : %s
" % Roronoa_Zoro_name)
# 结果呈现
# 罗罗诺亚·索隆名片
罗罗诺亚·索隆名片: {'name': '罗罗诺亚·索隆', 'age': 19, 'gender': 'male', 'height': 1.79, 'professional': '海贼猎人→草帽海贼团剑士', 'reward_gold': '3亿2000万贝里', 'dream': '成为世界第一的剑豪王'}
姓名 : 罗罗诺亚·索隆
2, 增加/修改
Roronoa_Zoro_dict = {
"name": "罗罗诺亚·索隆",
"age": 19,
"gender": "male",
"height": 1.79,
"professional": "海贼猎人→草帽海贼团剑士",
"reward_gold": "3亿2000万贝里",
"dream": "成为世界第一的剑豪王"
}
print("罗罗诺亚·索隆名片: %s
" % Roronoa_Zoro_dict)
# 如果key不存在,则会新增键值对
Roronoa_Zoro_dict["A_favorite_food"] = "酒、海兽的肉、能搭配酒的食物"
print("新增信息: %s
" % Roronoa_Zoro_dict)
# 结果呈现
# 罗罗诺亚·索隆名片
罗罗诺亚·索隆名片: {'name': '罗罗诺亚·索隆', 'age': 19, 'gender': 'male', 'height': 1.79, 'professional': '海贼猎人→草帽海贼团剑士', 'reward_gold': '3亿2000万贝里', 'dream': '成为世界第一的剑豪王'}
新增信息: {'name': '罗罗诺亚·索隆', 'age': 19, 'gender': 'male', 'height': 1.79, 'professional': '海贼猎人→草帽海贼团剑士', 'reward_gold': '3亿2000万贝里', 'dream': '成为世界第一的剑豪王', 'A_favorite_food': '酒、海兽的肉、能搭配酒的食物'}
修改年龄: {'name': '罗罗诺亚·索隆', 'age': 18, 'gender': 'male', 'height': 1.79, 'professional': '海贼猎人→草帽海贼团剑士', 'reward_gold': '3亿2000万贝里', 'dream': '成为世界第一的剑豪王', 'A_favorite_food': '酒、海兽的肉、能搭配酒的食物'}
### 3, 删除
Roronoa_Zoro_dict = {
"name": "罗罗诺亚·索隆",
"age": 19,
"gender": "male",
"height": 1.79,
"professional": "海贼猎人→草帽海贼团剑士",
"reward_gold": "3亿2000万贝里",
"dream": "成为世界第一的剑豪王",
'A_favorite_food': '酒、海兽的肉、能搭配酒的食物'
}
print("罗罗诺亚·索隆名片: %s
" % Roronoa_Zoro_dict)
# 结果呈现
# 罗罗诺亚·索隆名片
罗罗诺亚·索隆名片: {'name': '罗罗诺亚·索隆', 'age': 19, 'gender': 'male', 'height': 1.79, 'professional': '海贼猎人→草帽海贼团剑士', 'reward_gold': '3亿2000万贝里', 'dream': '成为世界第一的剑豪王'}
取消梦想信息:{'name': '罗罗诺亚·索隆', 'age': 18, 'gender': 'male', 'height': 1.79, 'professional': '海贼猎人→草帽海贼团剑士', 'reward_gold': '3亿2000万贝里', 'A_favorite_food': '酒、海兽的肉、能搭配酒的食物'}
### 4,统计键值对数量
Roronoa_Zoro_dict = {
"name": "罗罗诺亚·索隆",
"age": 19,
"gender": "male",
"height": 1.79,
"professional": "海贼猎人→草帽海贼团剑士",
"reward_gold": "3亿2000万贝里",
"dream": "成为世界第一的剑豪王"
}
# 4,统计键值对数量
num = len(Roronoa_Zoro_dict)
print("键值对数量: %s" % num)
print("罗罗诺亚·索隆名片: %s
" % Roronoa_Zoro_dict)
# 结果呈现
键值对数量: 7
罗罗诺亚·索隆名片: {'name': '罗罗诺亚·索隆', 'age': 19, 'gender': 'male', 'height': 1.79, 'professional': '海贼猎人→草帽海贼团剑士', 'reward_gold': '3亿2000万贝里', 'dream': '成为世界第一的剑豪王'}
### 5,合并字典
Roronoa_Zoro_dict = {
"name": "罗罗诺亚·索隆",
"age": 19,
"gender": "male",
"height": 1.79,
"professional": "海贼猎人→草帽海贼团剑士",
"reward_gold": "3亿2000万贝里",
"dream": "成为世界第一的剑豪王"
}
temp_Roronoa_Zoro_dict = {"A_favorite_food": "酒、海兽的肉、能搭配酒的食物"}
Roronoa_Zoro_dict.update(temp_Roronoa_Zoro_dict)
print("罗罗诺亚·索隆名片: %s
" % Roronoa_Zoro_dict)
# 结果呈现
罗罗诺亚·索隆名片: {'name': '罗罗诺亚·索隆', 'age': 19, 'gender': 'male', 'height': 1.79, 'professional': '海贼猎人→草帽海贼团剑士', 'reward_gold': '3亿2000万贝里', 'dream': '成为世界第一的剑豪王', 'A_favorite_food': '酒、海兽的肉、能搭配酒的食物'}
### 6,清空字典
Roronoa_Zoro_dict = {
"name": "罗罗诺亚·索隆",
"age": 19,
"gender": "male",
"height": 1.79,
"professional": "海贼猎人→草帽海贼团剑士",
"reward_gold": "3亿2000万贝里",
"dream": "成为世界第一的剑豪王"
}
Roronoa_Zoro_dict.clear()
print("罗罗诺亚·索隆名片: %s
" % Roronoa_Zoro_dict)
# 结果呈现
罗罗诺亚·索隆名片: {}
3,循环遍历
# for 循环内部使用的`key的变量` in 字典
Roronoa_Zoro_dict = {
"name": "罗罗诺亚·索隆",
"age": 19,
"gender": "male",
"height": 1.79,
"professional": "海贼猎人→草帽海贼团剑士",
"reward_gold": "3亿2000万贝里",
"dream": "成为世界第一的剑豪王"
}
# 结果呈现
name - 罗罗诺亚·索隆
age - 19
gender - male
height - 1.79
professional - 海贼猎人→草帽海贼团剑士
reward_gold - 3亿2000万贝里
dream - 成为世界第一的剑豪王
提示: 在实际开发中,由于字段中每一个键值对保存数据的类型是不同的,所以针对字典循环遍历需求并不是很多
4,应用场景
- 尽管可以使用
for in
遍历 字典 - 但是在开发中,更多的应用场景是:
- 使用多个键值对, 存储描述一个
物体
的相关信息 -- 描述更复杂的数据信息 - 将多个字典放在 一个列表 中,再进行遍历,在循环体内部针对每一个字典进行 相同的处理
- 使用多个键值对, 存储描述一个
The_Pirate = [
{
"name": "罗罗诺亚·索隆",
"age": 19,
"height": 1.79,
"professional": "海贼猎人→草帽海贼团剑士",
"reward_gold": "3亿2000万贝里",
},
{
"name": "文斯莫克·山治",
"age": 19,
"height": 1.79,
"professional": "草帽海贼团厨师",
"reward_gold": "3亿3000万贝里",
}
]
for k in The_Pirate:
print(k)
for i in k:
print("%s -- %s" % (i, k[i]))
# 结果呈现
{'name': '罗罗诺亚·索隆', 'age': 19, 'height': 1.79, 'professional': '海贼猎人→草帽海贼团剑士', 'reward_gold': '3亿2000万贝里'}
name -- 罗罗诺亚·索隆
age -- 19
height -- 1.79
professional -- 海贼猎人→草帽海贼团剑士
reward_gold -- 3亿2000万贝里
{'name': '文斯莫克·山治', 'age': 19, 'height': 1.79, 'professional': '草帽海贼团厨师', 'reward_gold': '3亿3000万贝里'}
name -- 文斯莫克·山治
age -- 19
height -- 1.79
professional -- 草帽海贼团厨师
reward_gold -- 3亿3000万贝里