zoukankan      html  css  js  c++  java
  • 老吴Python宝典之——Python字典&集合(第五章 )

     

    欢迎您进入老吴的博客,如有联系请加QQ群:1055524279

    5.1  python字典的概述

    在Python 3.5(含)以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插入字典,但是当你打印字典的Keys列表时,你会发现B可能在A的前面。

    但是从Python 3.6开始,字典是变成有顺序的了。你先插入键值对A,后插入键值对B,那么当你打印Keys列表的时候,你就会发现B在A的后面。

    作用:存多个值,key-value存取,取值速度快

    定义:key必须是不可变类型,value可以是任意类型

    字典是python基础数据类型当中唯一一个映射关系的数据类型;

    说明:

    字典和列表一样,也能够存储多个数据,字典中的值并没有特殊顺序。

    列表中找某个元素时,是根据下标进行的,如果下标很多,查找数据不方便。

    当索引不好用时,使用字典,字典中找某个元素时字典的每个元素由2部分组成,键:值。例如 'name':'班长' ,'name'为键,'班长'为值,字典由键值组成。

    程序当中的字典:

    生活中的字典特点:前几页相当于目录结构,通过偏旁部首可以查找内容。

     

    5.2  字典的增删改查操作

     

    参考代码:

    # 字典的增加
    infor = {"name":"zhangsan"}
    print(infor) # 打印
    infor["age"] = 16  #添加age
    infor["qq"] = 100886 # 添加qq
    print(infor)  # 打印

    # 字典的修改
    infor["qq"] = 10010  # 修改就是 :如果值存在就修改,不存在则是添加
    print(infor)

    # 字典的删除
    del infor["qq"]
    print(infor)

    # 字典的查询
    print(infor.get("name"))
    print(infor.get("qq"))

    字典增删改查语法:

     

    5.3  python字典的特点

    因为字典是无序的,所以字典没有索引值;

    因为字典没有索引值,所以字典以键取值,(字典的键相当于列表的索引);

    因为字典以键取值,所以字典的键唯一且不可修改;

    因为字典的键不可修改,所以列表和字典等可变类型的数据不可以给字典做键。

    5.4  python字典的常见操作

     

     

     

    字典的取值

    keys

    返回一个包含字典所有key的列表

    values

    返回一个包含字典所有vaule的列表

    get

    以键取值,如果指定键不存在,默认返回None,可以指定返回内容

    update

    以字典格式更新指定键的内容,如果键不存在,创建键和值

    items

    返回字典键值呈元组形式的格式

     

    len

    测量字典,键值对的个数(整体)

     

     

    参考代码:

    # 字典的查

    # 直接dic[key](没有此键会报错)
    dic = {'name': '老吴', 'age': 17}
    print(dic['name']) # 老吴

    print(len(dic)) #len()测量字典,键值对的个数(整体)

    # get 以键取值,如果指定键不存在,默认返回None,可以指定返回内容
    dic = {'name': '老吴', 'age': 17}
    v = dic.get('name')
    print(v) # '老吴'
    v = dic.get('name1')
    print(v) # None
    v = dic.get('name2','没有此键')
    print(v) # 没有此键

    # keys() 返回一个包含字典所有key的列表
    dic = {'name': '老吴', 'age': 17}
    print(dic.keys()) # dict_keys(['name', 'age'])

    # values() 返回一个包含字典所有vaule的列表
    dic = {'name': '老吴', 'age': 17}
    print(dic.values()) # dict_values(['老吴', 17])

    # items() 返回字典键值呈元组形式的格式
    dic = {'name': '老吴', 'age': 17}
    print(dic.items()) # dict_items([('name', '老吴'), ('age', 17)])

    # update 表示更新
    #字典(Dictionary) update() 函数把字典dict2的键/值对更新到dict里。
    dict = {'name': 'test', 'age': 17}
    dict2 = {'sex': 'man' }
    dict.update(dict2)
    print("更新后字典是%s" %dict)

     

     

     

     

    字典的删除

    pop

    弹出,返回并删除指定键对应的值

    popitem

    随机弹出一个键值元组,这里随机的原因是因为字典无序

    clear

    清空字典

    字典的判断

    in

    判断指定的键是否在字典当中,即将被废除,之后我们python3用in

    字典的遍历

    通过for ...in ...

    通过for ... in ...:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。

     

     

    参考代码:

    infor = {"name":"zhangsan","age":17}
    # 遍历字典
    for i in infor:
        print(i)
    print(infor.pop("age"))  #弹出,返回并删除指定键对应的值
    print(infor.popitem())  #随机弹出一个键值元组,这里随机的原因是因为字典无序
    print(infor.clear())  # 清空字典

     

    判断值存在应该判断key值

     

    5.5 Python集合

    5.5.1  集合的定义

    集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:
      去重,把一个列表变成集合,就自动去重了。
      关系测试,测试两组数据之前的交集、差集、并集等关系。
    作用:关系运算,去重

     

    参考代码:

    #coding:utf-8
    #作用:关系运算,去重
    s = {1,2,3,3,2,1}
    print(s)
    print(type(s)) # 打印集合类型

    集合没有顺序

    交集:公共部分

    并集:| 没有重复的

    对称差集^:只在x或y中,但是不会同时出现在二者中

    差集(a-b)是:项在a中,但不在b中。

    创建集合

     

    5.1.2 集合的增加和删除

     


    #集合的增加
    set1 = {'test','wusir','laowu'}
    set1.add('Python')
    print(set1)

    #集合的删除
    set1.remove('test')  # 删除一个元素
    print(set1)

    set1.pop()  # 随机删除一个元素
    print(set1)

    set1.clear()  # 清空集合
    print(set1)

    5.1.3  集合的其他操作

     

    参考代码:

    #coding:utf-8
    #作用:关系运算,去重
    python = {"test","gavin","woniu"}
    linux = {"boy","girl","test"}
    # &交集:同时报名两门课程的学生
    print(python&linux)

    # |并集: 所有的学生
    print(python|linux)

    #^ 对称差集:没有同时报名两门课程
    print(python^linux)

    #  - 差集:只报名python课程的学生,去掉共同的部分
    print(python-linux)

  • 相关阅读:
    【STM32F429开发板用户手册】第11章 STM32F429移植SEGGER的硬件异常分析
    【STM32F407开发板用户手册】第11章 STM32F407移植SEGGER的硬件异常分析
    【STM32F429开发板用户手册】第10章 STM32F429的FLASH,RAM和栈使用情况(map和htm文件)
    【STM32F407开发板用户手册】第10章 STM32F407的FLASH,RAM和栈使用情况(map和htm文件)
    【STM32F4029开发板用户手册】第9章 STM32F429重要知识点数据类型,变量和堆栈
    手写Mybatis插件
    Mybatis插件原理和整合Spring
    深入分析代理模式
    Mybatis源码(五)
    Mybatis源码(六)
  • 原文地址:https://www.cnblogs.com/wusirtpc/p/12315594.html
Copyright © 2011-2022 走看看