Python 高级变量类型 --- 字典

字典

1,字典的定义

  • dictionary (字典) 是除列表以外python之中最灵活的数据类型
  • 字典同样可以用来存储多个数据
    • 通常用于存储 描述一个物体的相关信息
  • 和列表的区别
    • 列表有序 的对象集合
    • 字典无序 的对象集合
  • 字典用{}花括号定义
  • 字典使用 键值对 存储数据,键值对之间使用,分隔
    • key 是索引
    • value 是数据
    • 之间用:冒号分隔
    • 键必须是唯一的
    • 可以去任何数据类型,但是 只能使用字符串、数字或元组
	Roronoa_Zoro_dict = {
		"name": "罗罗诺亚·索隆",
		"age": 19,
		"gender": "male",
		"height": 1.79,
		"professional": "海贼猎人→草帽海贼团剑士",
		"reward_gold": "3亿2000万贝里",
		"dream": "成为世界第一的剑豪王"
	}
	
	print("罗罗诺亚·索隆名片: %s \n" % 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 \n" % Roronoa_Zoro_dict)
	
	# 取值时,需通过key来取值,不可一次取多个key,如果key没有则报错
	Roronoa_Zoro_name = Roronoa_Zoro_dict["name"]
	print("姓名 : %s \n" % 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 \n" % Roronoa_Zoro_dict)

	# 如果key不存在,则会新增键值对
	Roronoa_Zoro_dict["A_favorite_food"] = "酒、海兽的肉、能搭配酒的食物"
	print("新增信息: %s \n" % 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 \n" % 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 \n" % 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 \n" % 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 \n" % 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万贝里

posted @ 2018-08-10 17:10  小Q渺晓  阅读(227)  评论(0编辑  收藏  举报