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)

  • 相关阅读:
    HDU 5486 Difference of Clustering 图论
    HDU 5481 Desiderium 动态规划
    hdu 5480 Conturbatio 线段树 单点更新,区间查询最小值
    HDU 5478 Can you find it 随机化 数学
    HDU 5477 A Sweet Journey 水题
    HDU 5476 Explore Track of Point 数学平几
    HDU 5475 An easy problem 线段树
    ZOJ 3829 Known Notation 贪心
    ZOJ 3827 Information Entropy 水题
    zoj 3823 Excavator Contest 构造
  • 原文地址:https://www.cnblogs.com/wusirtpc/p/12315594.html
Copyright © 2011-2022 走看看