• 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 
    " % 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万贝里
    
    
  • 相关阅读:
    Semaphore
    财报分析
    关于C#中的new的用法
    Linux(CentOS)下Postgresql数据库的安装配置
    CentOS下实现SCP免输密码传送文件
    HiveQL逻辑执行顺序
    CentOS上以源码的方式安装Redis笔记
    Python学习心得(七) 深入理解threading多线程模块
    SQL Server返回两个Date日期相差共多少天零多少小时零多少分钟零多少秒
    Python学习心得(六) 反射机制、装饰器
  • 原文地址:https://www.cnblogs.com/xiaoqshuo/p/9456272.html
Copyright © 2020-2023  润新知