zoukankan      html  css  js  c++  java
  • python基础三

    一、字典disc

      字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的.

    数据类型分为:可变数据类型、不可变数据类型

      不可变数据类型:元组、bool、int、str   这些数据类型可哈希

      可变数据类型:列表list、字典dict、集合set  这些数据类型不可哈希

      字典的key必须是不可变的数据类型,可哈希

      字典的value可以是任意数据类型

      字典的优点:二分查找去查询   储存大量的关系型数据

      字典的特点:无序的

    1.1 增:

      

    dic = {'name':'lucy','sex':'woman','age':18}
    dic['hight'] = 180  #没有键的时候,则添加
    dic['age'] = 16     #字典中原本就有此键,则值会覆盖掉原来的
    dic.setdefault('weight') #默认值是None
    dic.setdefault('weight',150)
    dic.setdefault('name','二哥')  #键有的话不做任何改变,没有才添加
    print(dic)
    View Code

    1.2删:

    dic = {'name':'lucy','sex':'woman','age':18}
    dic.pop('age')  #有返回值  返回删除的键对应的值   参数必须写,不写则会报错,跟列表list有区别
    print(dic)
    print(dic.pop('djhs','没有此键'))  #可设置返回值
    
    dic.popitem()  #随机删除  有返回值,返回元组形式删除的键和值
    print(dic)
    
    dic.clear()  #清空字典
    print(dic)  
    
    del dic['name']  #存在则删除,不存在则报错
    print(dic)
    
    del dic   #删除字典
    print(dic)
    View Code

    1.3改:

    dic = {'name':'lucy','sex':'woman','age':18}
    dic2 = {"name":"alex","weight":75}
    dic2.update(dic)  # 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中
    print(dic2) #{'weight': 75, 'sex': 'woman', 'name': 'lucy', 'age': 18}
    print(dic)  #{'sex': 'woman', 'name': 'lucy', 'age': 18}
    View Code

    1.4查:

    dic = {'name':'lucy','sex':'woman','age':18}
    print(dic.keys())  #dict_keys(['name', 'sex', 'age'])
    print(dic.values())  #dict_values(['lucy', 'woman', 18])
    print(dic.items())   #dict_items([('name', 'lucy'), ('sex', 'woman'), ('age', 18)])
    
    for i in dic:
        print(i)   #name age sex
    
    for i in dic.values():
        print(i)     #woman lucy 18
    
    for k,v in dic.items():
        print(k,v)
    # age 18
    # sex woman
    # name lucy
    
    
    v1 = dic['name1']
    # print(v1)   #报错
    
    print(dic.get('name1'))  #None 没有这个键,不会报错  所以首选get
    print(dic.get('name1','没有这个键'))
    View Code

    1.5字典嵌套

    dic = {
        'name':['张三','李四','王五'],
        'info':{
            'addr':'beijing',
            'date':'20171220'
        },
        'age':20
    }
    dic['age'] = 22
    dic['name'].append('马七')
    dic['info']['addr'] = dic['info']['addr'].upper()
    print(dic)
    View Code

     1.6删除下列字典中含有'k'的键对应的值

    dic = {'k1':'v1','k2':'v2','a3':'v3'}
    
    #方法一
    dic1 = {} # 创建一个空的字典
    for i in dic:
        if 'k' not in i:
            dic1.setdefault(i,dic[i])  #将不含‘k’的键以及对应的值添加到dic1中
    dic = dic1
    print(dic)
    
    #方法二
    l = []   #创建一个空的列表
    for i in dic:
        if 'k' in i:
            l.append(i)  #将含有‘k’的键追加到列表l中
    for i in l:   #变量列表l,每个i正好是字典中含有'k'的键,通过del删除该键及对应的值
        del dic[i]
    print(dic)
    View Code

    二、集合

      集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希的(集合是可变的数据类型)。

    集合最重要的两个特点是:

      a:去重,把一个列表变成集合,就自动去重了。

      b:关系测试,测试两组数据之间的交集、差集、并集等关系。

    2.1:集合的创建。  

    set1 = set({1,2,'hjm'}) # 创建方法一
    set2 = {1,2,'hjm'} # 创建方法一
    print(set1,set2)  # {'hjm', 1, 2} {'hjm', 1, 2}

    2.2:集合的增。

    set1 = {'lucy','jim','lily','hello','world'}
    # add
    set1.add('张三')
    print(set1)
    
    # update: 迭代着添加
    set1.update('Ab') #{'lucy', 'b', 'A', 'lily', 'hello', 'world', 'jim'}
    set1.update([1,2,3])  #{1, 'lily', 'lucy', 2, 3, 'jim', 'world', 'hello'}
    set1.update('中国')  #{'lucy', '中', 'hello', 'world', 'lily', '国', 'jim'}
    print(set1)

    2.3:集合的删。

    set1 = {'lucy','jim','lily','hello','world'}
    #remove 删除一个指定元素
    set1.remove('jim')    # {'hello', 'world', 'lucy', 'lily'}
    
    #pop  随机删除一个元素
    set1.pop()     # {'world', 'hello', 'lucy', 'lily'}
    
    #clear  清空集合
    set1.clear()    # set()
    
    #del  删除集合
    del set1
    print(set1)

    2.4:集合的查。

    set1 = {'a','bb','ccc','f','d'}
    for i in set1:
        print(i)

    2.5:集合的其它操作

    2.5.1交集

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    set3 = set1 & set2
    print(set3)   # {4, 5}

    2.5.2并集

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    set4 = set1 | set2 
    print(set4)   # {1, 2, 3, 4, 5, 6, 7, 8}

    2.5.3反交集

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    set5 = set1 ^ set2
    print(set5)   # {1, 2, 3, 6, 7, 8}

    2.5.4差集

    set1 = {1,2,3,4,5}
    set2 = {4,5,6,7,8}
    set6 = set1 - set2   #set1中独有的
    print(set6)   # {1, 2, 3}

    2.5.5子集

    set1 = {1,2,3}
    set2 = {1,2,3,4,5}
    set3 = {1,2,5,6}
    print(set1 < set2)  # True
    print(set1 < set3)  # False

    2.5.6超集

    set1 = {1,2,3}
    set2 = {1,2,3,4,5}
    set3 = {1,2,5,6}
    print(set2 > set1)  # True
    print(set3 > set1)  # False

    2.5.7 frozenset不可变集合,让集合变成不可变类型

    s = frozenset('barry')
    print(s,type(s))  # frozenset({'a', 'b', 'r', 'y'}) <class 'frozenset'>
    
    
  • 相关阅读:
    2021暑假模拟赛6
    2021暑假模拟赛5
    2021暑假模拟赛4
    2021暑假模拟赛3
    2021暑假模拟赛2
    umi提速方案之 mfsu
    Nginx (可为容器)配置 BasicAuth 与访问
    Mango 漫画管理器体验
    blivechat 在 OBS 中使用 BasicAuth URL 登录
    Electron 实现最小化到托盘
  • 原文地址:https://www.cnblogs.com/huangjm263/p/8073778.html
Copyright © 2011-2022 走看看