python基础之数据类型III

5.Dictionaries(字典)

5.1字典的认识

  • 引子

    我已经讲过的数据类型 int float str bool tuple list,我们讲的列表的数据类型有什么缺点?

    • 列表数据类型如果存储的数据量较大,查询速度慢。

    • 列表容器型数据类型存储的数据之间的关联性不强。

      ['旋哥', 22, '男', '小金', 22, '男', '唱跳rap篮球']
      
    • 针对于上述的列表的两种缺点,python提供了另一种容器型数据类型,

      • 字典dict。字典是以{}括起来,通过键值对的形式存储的容器型数据类型。他存储的数据量没有list的数据量大,但是字典的查询速度非常快,并且字典存储的数据之间的关联性较强。

      • 字典从python3.7以后都是有序的。

        字典的查询类似于二分查找:每次查询一半,从一半这个数字与目标数字对比,如果比目标数字小,则在从一半与目标数字取一半,在次查询.....
        比如,100个数字,我要找到任意一个数字,二分查找算法找不超过2**n > 100  n=7次。
        
  • 字典的键一定是唯一的,并且是不可变的数据类型,字典的值是任意数据类型。

    # 判断以下字典哪个合法?
    {"name": "barry", 1: 333}
    {1.4: 666, [1,2]: 777}
    {(22, 33): 555, 'age': 18}
    {([11,22]): 34, 1: 1}#
    {'旋哥': {'name': '旋哥', 'age': 22, 'hobby': '跑步'},'name_list': ['小金', '明天', '阿珍']
    }
    

5.2字典的操作

5.2.1字典的创建

  • # 方式一 简单创建
    dic1 = {'name': 'Allen', 'age': 25, 'hobby': ['girl', '球类运动', '台球']}# 方式二
    dic2 = dict((('one', 1), ('two', 2), ('three', 3)))
    print(dic2)# 方式三
    dic3 = dict(name='Allen', age=25, sex='男')
    print(dic3)
    
  • 字典的键是唯一的,我们所有的通过字典的操作都是通过键去操作键值对,我们可以把字典的键当做列表的索引。方便你理解。

5.2.2字典的增、改

  • dic1 = {'name': 'Allen', 'age': 25}# 方式一 有责改之,无责增加
    # dic1['sex'] = '男'
    # dic1['name'] = '明哥'
    # print(dic1)# 方式二 有责改之,无责增加
    # dic1.update(sex='男', hobby='girl')
    # dic1.update({'hobby': ['girl', '球类运动']})
    # dic1.update({'name': '天哥', 'hobby': 'run'})
    # print(dic1)# 方式三 有则不变,无责增加
    # dic1.setdefault('sex', '男')
    dic1.setdefault('name', '豪哥')
    print(dic1)
    

5.2.3字典的删

  • dic1 = {'name': 'Allen', 'age': 25}# 方式一:pop 按照键去删除键值对,返回对应的值
    # ret = dic1.pop('name')
    # print(ret)# 方式二 del
    # del dic1['name']
    # del dic1# 方式三:clear
    dic1.clear()
    print(dic1)
    

5.2.4字典的查

  • dic1 = {'name': 'Allen', 'age': 25}
    dic1 = {'name': 'Allen', 'age': 25}# 方式一 直接查询(不推荐)# ret = dic1['name']
    # ret = dic1['name1']# 方式二: get (推荐)
    # ret = dic1.get('name')
    # ret = dic1.get('name1')
    # 还可以设置返回值
    # ret = dic1.get('name1', '没有此键')# 方式三 :setdefault 有奇用
    # ret = dic1.setdefault('name')
    ret = dic1.setdefault('name1')
    print(ret)
    
  • 特殊查询

    dic1 = {'name': 'Allen', 'age': 25, 'card': '6217 0001 9000 2473 653'}
    # for循环遍历 直接循环,循环字典的键
    # for i in dic1:
    #     print(i)# 获取字典所有的键  类似于列表,可以转化成列表,也可以直接循环。
    # keys = dic1.keys()  # dict_keys(['name', 'age', 'card'])
    # # print(list(keys))
    # # print(keys)
    # for i in keys:
    #     print(i)# 获取字典所有的值 类似于列表,可以转化成列表,也可以直接循环。
    # values = dic1.values()
    # print(list(values))
    # print(values)
    # for val in values:
    #     print(val)
    #
    # 获取字典所有的键值对 类似于列表,可以转化成列表,也可以直接循环。
    # items = dic1.items()
    # # print(list(items))
    # # print(items)
    # for i in items:
    #     print(i)
    

5.3解构

也叫做分别赋值

  • # a = 10
    # 变量与值一一对应
    # a, b = 10, 20
    # print(a,b)# a, b, c = ('Allen', '旋哥', 666)
    # a, b, c = ['Allen', '旋哥', 666]
    # print(a, b, c)# a, b = (1, 2, 3)
    # print(a, b)# 面试题 有变量a = 10, 变量b = 30 用最简单的方法让a,b两个变量的值互换。
    a = 10
    b = 30
    a, b = b, a  # a, b = 30, 10
    print(a, b)# 延展dic1 = {'name': 'Allen', 'age': 25, 'card': '6217 0001 9000 2473 653'}
    # for item in dic1.items():
    """第一次循环:item  = ('name', 'Allen')第二次循环:item  = ('age', 25).....
    """# print(item)# for key, val in dic1.items():"""第一次循环:key, val  = ('name', 'Allen')第二次循环:key, val  = ('age', 25)....."""# print(key, val)
    

5.4字典的嵌套

  • dic = {'name': '阿峰','age': 48,'wife': [{'name': '国际小章', 'age': 38}],'children': {'girl_first': '苹果', 'girl_second': '小怡怡', 'girl_three': '小顶顶'}
    }# 1. 获取阿峰的名字。
    # print(dic.get('name'))
    #
    # 2.获取这个字典:{'name':'国际小章','age':38}。
    # lst = dic.get('wife')
    # print(lst[0])
    # 3. 获取阿峰妻子的名字。
    # ret = dic.get('wife')[0].get('name')
    # print(ret)
    #
    # 4. 将阿峰的第三个孩子名字改成 xx.
    # print(dic.get('children')['girl_three'])
    dic.get('children')['girl_three'] = 'xx'
    print(dic)

6.Sets(集合)

6.1集合的介绍

  • 集合,set,python的基础数据类型,它是以{}括起来,通过逗号隔开的容器型数据类型。集合是无序的,集合要求它里面的数据是不可变的数据类型,并且不能重复,但是集合本身是可变的数据类型。

  • 集合的优点:

    • 列表去重。

    • 关系测试。(测试两个集合的交集,并集,差集,反交集等)

  • 测试集合的合法性:

    # set1 = {10, True, 'Allen', (1, 2, 3)}
    # print(set1)
    # # set1 = {10, [1, 2, 3], 'Allen', (1, 2, 3)} # 错误
    # set1 = {10, {'name': '小金'}, 'Allen', (1, 2, 3)} # 错误
    # print(set1)# 空集合如何显示?
    # print({}, type({}))
    set1 = set()
    print(set1, type(set1))
    
  • 列表的去重

    l1 = [1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 6]
    # 将l1列表进行去重。
    # list ---> set
    set1 = set(l1)
    print(set1)
    # set ---> list
    print(list(set1))
    # 将l1列表进行去重(不让使用集合)。
    自己想。
    

6.2集合的常用操作

6.2.1增

  • set1 = {'Allen', '珍哥', '树哥', '姚哥'}
    # add
    # set1.add('硕哥')
    # print(set1)# 迭代着增加 update
    # set1.update('abc')
    set1.update([1, 2, 3])
    print(set1)
    

6.2.2删

  • # pop 随机删除有返回值
    # ret = set1.pop()
    # print(ret)
    # print(set1)# remove 按照元素删除
    # set1.remove('聪哥')
    # print(set1)# clear清空
    # set1.clear()
    # print(set1)
    

6.2.3改

  • # 先删除后增加
    # set1.remove('Allen')
    # set1.add('男神')
    # print(set1)
    

6.2.4查

  • for i in set1:print(i)
    

6.3集合的关系测试

  • 交集、反交集、并集、差集、子集、超集

    • set1 = {1, 2, 3, 4, 5}
      set2 = {4, 5, 6, 7, 8}# 交集
      print(set1 & set2)
      print(set1.intersection(set2))# 反交集
      print(set1 ^ set2)
      print(set1.symmetric_difference(set2))# 并集
      print(set1 | set2)
      print(set1.union(set2))# 差集
      print(set1 - set2)  # set1独有的
      print(set1.difference(set2))
      print(set2 - set1 )  # set2 独有的# 子集
      set1 = {1, 2, 3, 4, 5}
      set2 = {3, 4, 5}
      print(set1 > set2)  # set1 是set2 超集
      print(set1.issuperset(set2))  # set1 是set2 超集print(set2 < set1)  # set2 是set1的子集
      print(set2.issubset(set1))  # set2 是set1的子集
      
  • 冻集合

    • 集合本身是可变的数据类型,我们可以将集合变成不可变的数据类型,将集合冻起来。

    • set2 = {3, 4, 5}
      set3 = frozenset(set2)
      # print(set3)
      print(set(set3))
      # dic = {set3: 666}
      # print(dic)
      

python基础之数据类型III相关推荐

  1. Python基础之数据类型(一)

    Python基础之数据类型(一) 一.数据类型种类 二.int类型 三.float类型 1.float介绍 2.float简单示例 三.bool类型 1.布尔值为true 2.布尔值为false 四. ...

  2. Python基础之数据类型II

    Python基础之数据类型II 3.List(列表) 引子 我们现在已经学过的基础数据类型: int float str bool,str类型可以帮我们存储少量的数据,但是str有什么缺点? str存 ...

  3. 1. Python基础之数据类型与注释

    文章目录 Python基础之数据类型与注释 1.变量 2.数据类型 2.1 Number类型 Int 整型 Float 浮点型 2.2 Bool 布尔类型 2.3 String 字符串类型 2.4 L ...

  4. 【python基础】——数据类型(列表、字典、集合)

    骏马金龙--python语法基础 python基础 变量与运算 符号 // % ** 意义 整除 整除取余 幂次方 数据种类 #mermaid-svg-7nSRRijcYFCYwTDr .label{ ...

  5. python 基础(数据类型、运算符、流程控制、推导式、函数等...更新中)

    python基础 一.认识Python 1.python起源 Python 的创始人为吉多·范罗苏姆(Guido van Rossum),江湖人称"龟叔". 1991年,第一个Py ...

  6. python基础之数据类型与变量

    阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整型long: 2.2.1.3 布尔bool ...

  7. python定义变量类型_一、python基础之数据类型与变量

    一.变量 声明变量 #!/usr/bin/env python age=9 name='ld' name1='ld1' 变量作用:保存状态(程序的运行本质是一系列状态的变化,变量的目的就是用来保存状态 ...

  8. python定义一个整数变量a_第二篇.1、python基础之数据类型与变量

    一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:"变"=>变 ...

  9. python基础之数据类型

    一.数据类型 python中的数据类型 python使用对象模型来存储数据,每一个数据类型都有一个内置的类,每新建一个数据,实际就是在初始化生成一个对象,即所有数据都是对象. 对象三个特性: 身份:内 ...

最新文章

  1. array column函数php,php array_column 函数实例应用
  2. java中配置bean_Spring中基于Java的配置@Configuration和@Bean用法
  3. Ulua_toLua_基本案例(八)_LuaAccessingArray
  4. 云计算底层技术-虚拟网络设备(Bridge,VLAN)
  5. Redis 6.0 的客户端缓存是怎么肥事?一文带你了解!
  6. OpenCV属性页配置问题~
  7. C# log4net纯代码设置参数
  8. 8.Docker技术入门与实战 --- 使用Dockerfile创建镜像
  9. BUAA(2021春) 北京地铁乘坐线路查询——Dijkstra和Floyd双解法
  10. android dm 分区异常,硬盘分区时损坏,无法使用PQ和DM,如何修复
  11. 冰封王座人工只能_魔兽争霸3玩家热议 人工智能能否轻松战war3胜职业选手?
  12. 微信小程序自定义tabbar以及闪烁问题
  13. 分布式电商项目五:使用人人开源搭建前后分离的后台管理系统
  14. 【netron】模型可视化工具netron
  15. 联想最小的计算机,联想开卖全球首款5G笔记本电脑,搭载业界最小5G模块
  16. 栈结构之链栈详解(C语言版)
  17. 高防CDN服务的应用场景之门户网站
  18. win8系统设置杜比音效的详细步骤--win7w.com
  19. 10款响应式自适应网站模板(二)
  20. 高中综合素质文化素养

热门文章

  1. android 音量 广播,Android平台音量调节(一)音量键调节音量
  2. 股票量化投资策略有哪些特点?
  3. 刚子扯谈:网站运营路在何方?
  4. 5G上下行传输方案及资源块映射
  5. Dockerfile 构建python环境
  6. 一个月面试大厂,中厂,小厂的总结|2021 年中总结
  7. move lob会不会影响其他索引状态?
  8. Ubuntu系统安装微信(解决高分辨率屏幕问题及图标显示问题)
  9. 圆桌共话:如何冲破数据高墙,连线“数智未来”?
  10. 数据告诉你哪里才是中国最热的火炉城市?