美文网首页
07-字典与集合的操作

07-字典与集合的操作

作者: 蛋挞先生L | 来源:发表于2018-11-05 20:35 被阅读0次

    字典

    创建多个元素的字典

    方式1:*****
        变量 = {键:值,键:值....}
        dict1 = {"a":1,"b":2,"c":3}
    
    方式2:
        变量 = dict({键:值,键:值....})
        dict2 = dict({"a":1,"b":2,"c":3})
    
    方式3:
        变量 = dict(键=值,键=值...)
        注意:该方式键作为形参名使用,不可以添加引号,必须符合变量规则
        dict3 = dict(a=1,b=2,c=3)
    
    方式4:
        变量 = dict([(键,值),(键,值)...])
        变量 = dict([[键,值],[键,值]...])
        变量 = dict(((键,值),(键,值)...))
    
    方式5:****
        变量 = dict(zip((键,键...),(值,值...)))
        
        list1 = ["a","b","c"]
        list2 = [1,2,3]
        dict4 = dict(zip(list1,list2))
        
        list1 = ["a","b","c","d","e","f"]
        list2 = [1,2,3]
        dict4 = dict(zip(list1,range(1,10)))
    

    字典的遍历

    遍历键

    for 变量i in 字典:
        #使用i遍历所有的键,有键就可以通过变量访问其值
    
    # for key in dict1:
    #     print(key)
    

    遍历键和值

    for 变量i,变量j in 字典.items():
        #使用变量i遍历所有键,通过变量j遍历所有值
    
    # for key,value in dict1.items():
    #     print(key,value)
    

    字典的内置函数

    clear() 清空字典

    功能:清空字典
    格式:字典.clear()
    返回值:None
    注意:直接改变原有字典
    
    # dict1.clear()
    # print(dict1)
    

    **copy() ** 复制字典

    功能:复制字典
    格式:字典.copy()
    返回值:新的字典
    
    # dict2 = dict1.copy()
    # print(dict2)
    

    fromkeys() 使用指定的序列作为键创建字典

    功能:使用指定的序列作为键创建字典
    格式:字典.fromkeys(序列,值)
    返回值:不包含原字典内容的新字典
    注意:后面的值是作为整体传入字典
    
    # lsd = ["d","e","f"]
    # lsd1 = [1,2,3]
    # dict2 = dict1.fromkeys(lsd,lsd1)
    # print(dict2)
    

    get() **** 根据键获取指定的值

    功能:根据键获取指定的值
    格式:字典.get(键[,默认值])
    返回值:值
    注意:如果键不存在,则使用默认值,如果没有默认值则返回None
    
    # print(dict1["e"])
    # print(dict1.get("e"))
    

    items() **** 将字典的键值转化成类似元组的形式,方便遍历

    功能:将字典的键值转化成类似元组的形式,方便遍历
    格式:字典.items()
    返回值:类似元组的类型
    

    keys() **** 将字典的所有键组成一个序列

    功能:将字典的所有键组成一个序列
    格式:字典.keys()
    返回值:序列
    
    print(dict1.keys())
    

    values() **** 将字典的所有值组成一个序列

    功能:将字典的所有值组成一个序列
    格式:字典.values()
    返回值:序列
    
    print(dict1.values())
    

    pop() *** 移除字典中指定的元素

    功能:移除字典中指定的元素
    格式:字典.pop(键[,默认值])
    返回值:被移除的键对应的值
    注意:如果键不存在,则报错;如果键不存在,默认值设置,则返回默认值
    
    # dict2 = dict1.pop("a")
    # print(dict2)
    

    popitem() 移除字典中最后一对键值对,没有参数

    功能:移除字典中最后一对键值对,没有参数
    格式:字典.popitem()
    返回值:键值对组成的元组
    注意:弹一个原字典就少一个,字典为空就不可以弹出,会报错
    
    # dict1.popitem()
    # dict1.popitem()
    # dict1.popitem()
    # dict1.popitem()
    # print(dict1)
    

    setdefault() 添加一个元素

    功能:添加一个元素
    格式:字典.setdefault(键,值)
    返回值:None
    注意:添加是键存在,则不进行任何操作;键不存在则添加,添加时不写值,默认None值
    
    # dict1.setdefault("d",4)
    # print(dict1)
    #
    # dict1["e"] = 5
    # print(dict1)
    

    update() ***

    功能:修改字典中的值;如果添加的key在原始字典中没有  那么就添加新的键值对;如果有,那么就更新原字典的键所对应的值
    
    方式1:
        格式: 字典.update(键=值)
        返回值:None
        注意:此处的键作为关键字参数使用,不可以添加''
    
    方式2:
        格式: 字典.update({键:值})
        返回值:None
    
    # dict1.update(d=5)
    # print(dict1)
    #
    # dict1.update({"e":6})
    # print(dict1)
    
    # 如果添加的key在原始字典中没有  那么就添加新的键值对   如果有  那么就更新原字典的键所对应的值
    # dict2 = {"f":7,"g":8,"a":0}
    # dict1.update(dict2)
    # print(dict1)
    

    集合

    确定的无序的一组数据就是集合。

    • 集合中的值不会重复(唯一)
    • 集合中的元素没有任何顺序
    • 集合中可以使用整数,浮点数,布尔值,复数,字符串,元组,冰冻集合

    集合的内置函数

    add() 向集合中添加一个元素

    格式:集合.add(值)
    返回值:None
    注意:直接改变原有集合
    
    # s.add(7)
    # print(s)
    

    pop() 随机删除集合中的一个元素

    格式:集合.pop()
    返回值:删除的那个元素
    注意:直接改变原有集合
    
    # s.pop()
    # print(s)
    

    remove() 删除集合中的某个元素

    格式:集合.remove(值)
    返回值:None
    注意:如果集合中不存在这个元素,会报错;直接改变原有集合
    
    # s.remove(7)
    # print(s)
    

    discard() 删除集合中的某个元素

    格式:集合.dicard(值)
    返回值:None
    注意:如果集合中不存在该元素,不会报错;直接改变原有集合
    

    remove移除非成员值会报错,discard移除非成员值,啥也不错!

    # s.discard(9)
    # print(s)
    

    clear() 清空集合

    格式:集合.clear()
    返回值:None
    注意:直接改变原有集合
    
    # s.clear()
    # print(s)
    

    copy() 复制集合

    格式:集合.copy()
    返回值:复制的一份集合
    
    # s2 = s.copy()
    # print(s2)
    

    difference() 求差集

    格式:集合1.difference(集合2)
    返回值:集合
    操作:获取存在于集合1但是不存在与集合2中的数据的集合
    
    # result = x.difference(y)
    # result1 = y.difference(x)
    # print(result)
    # print(result1)
    

    difference_update() 差集更新

    格式:集合1.difference(集合2)
    返回值:无 直接将结果赋值给集合1
    操作:获取存在于集合1但是不存在与集合2中的数据的集合
    
    # x.difference_update(y)
    # print(x)
    

    **intersection() ** 交集

    格式:集合1.intersection(集合2)
    返回值:集合
    操作:获取即存在于集合1又存在于集合2中的数据组成的集合
    
    # result = x.intersection(y)
    # print(result)
    

    intersection_update() 交集更新

    格式:集合1.intersection_update(集合2)
    返回值:None  直接将结果赋值给集合1
    操作:获取即存在于集合1又存在于集合2中的数据组成的集合
    

    union() 并集

    格式:集合1.union(集合2)
    返回值:集合
    操作:将集合1和集合2中所有数据新建一个集合(去重)
    
    # result = x.union(y)
    # print(result)
    

    update() 并集更新

    格式:集合1.update(集合2)
    返回值:无   直接将结果赋值给集合1
    操作:将集合1和集合2中所有数据新建一个集合(去重)
    

    **issuperset() ** 检测一个集合是不是另外一个集合的超集(父集)

    格式:集合1.issuperset(集合2)
    返回值:布尔值
    
    # result = y.issuperset(z)
    # print(result)
    

    **issubset() ** 检测一个集合是不是另外一个集合的子集

    格式:集合1.issubset(集合2)
    返回值:布尔值
    
    # result = z.issubset(y)
    # print(result)
    

    isdisjoint() 检测2个集合是否不相交

    格式:集合1.isdisjoint(集合)
    返回值:布尔值
    

    symmetric_difference() 对称差集操作

    格式:集合1.symmetric_difference(集合2)
    返回值:集合
    操作:将集合1和集合2不相交的部分取出组成的新的集合
    
    # result = x.symmetric_difference(y)
    # result1 = y.symmetric_difference(x)
    # print(result)
    # print(result1)
    

    **symmetric_difference_update() ** 对称差集更新操作

    格式:集合1.symmetric_difference(集合2)
    返回值:None 直接将结果赋值给集合1
    操作:将集合1和集合2不相交的部分取出组成的新的集合
    

    冰冻集合

    创建空的冰冻集合

    变量 = frozenset()
    

    创建多个元素的集合

    变量 = frozenset(容器类数据)
    
    s = frozenset()
    print(type(s))
    
    s1 = frozenset([1,2,3,6,54])
    print(s1)
    

    文件操作

    open()语法

    功能:打开或者创建一个文件,如果已有该文件则打开,如果没有则创建
    格式:open('文件路径','打开模式')
    返回值:文件io对象
    

    语法 file_object = open(path,mode)

    • path:文件的路径和名称 ,格式为字符串

    • mode:文件打开的权限 ,格式为字符串

    • w 写权限

      • 如果没有这个文件 ,自动创建一个;如果有这个文件,那么将会覆盖掉之前的内容。
      f =
      open("user.txt","w",encoding="utf-8")
      #write()  向对应的文件中写入文件
      f.write("有纹身的都怕热,镶金牙的爱咧嘴")
      #close()  关闭文件
      f.close()
      
    • a 追加写权限

      • 如果没有这个文件,自动创建一个;如果有这个文件,那么就在文件末尾进行追加
      f = open("user.txt","a",encoding="utf-8")
      f.write("金星说:“人不犯我,我不犯人,人若犯我,礼让三分,人若再犯,斩草除根")
      f.flush()
      while True:
          pass
      
      • 写操作是将要写入的内容先写到缓冲区,把内容写入文件有以下几种方式

        • 当程序运行结束 自动写入
        • 当文件关闭 自动写入
        • 当缓冲区被写满 自动写入
        • flush()刷新缓冲区 立即写入
    • r 读操作

      • read() 读取全文
      • readline() 读一行
      • readlines() 以行为单位读取全文
      f = open("user.txt","r",encoding="utf-8")
      # read() 读取全文
      # content = f.read()
      # print(content)
        
      # readline()  读一行
      contents = f.readline()
      print(contents)
      
      # readlines() 以行为单位读取全文
      result = f.readlines()
      print(result)
      f.close()
      
    • wb 二进制写入

      f = open("user.txt","wb")
      str1 = "大金链子小手表"
      # encode() 对数据进行指定格式的编码
      # f.write("大金链子小手表".encode("utf-8"))
      f.write(str1.encode("utf-8"))
      f.close()
      
    • rb二进制读取

      f = open("user.txt","rb")
      # decode() 对数据进行指定格式的解码
      content = f.read().decode("utf-8")
      print(content)
      
    • seek() 刷新指针(光标)位置

      • 两个参数:第一个为移动的字节,第二个为起始位置
      • python2版本第二个参数有三个值,0-开头位置;1-当前位置;2-结尾位置
      • python3版本中第二个参数只有一个值,就是0
    • w+、a+、r+都是读写权限*

    with open()语法

    • 格式:with open(文件路径,权限) as 变量:
    • 此处 变量 是一个局部变量,无法在代码块外使用
    • 不用手动关闭文件,代码块运行完毕后自动关闭文件
    with open("user.txt","a+") as f:
        #此处的文件对象f 是一个局部变量
        # tell() 告诉我们当前光标在什么位置
        content = f.read()
        print(f.tell())
        f.seek(10,0)
        print(f.tell())
        result = f.readline()
        #seek(offset,whence)  whence代表参考位置  offset代表字节数
            # whence = 0    以开头为参考位置
            # whence = 1    以当前为参考位置  (3.x取消了此项功能)
            # whence = 2    以结尾为参考位置  (3.x取消了此项功能)
        print(result)
    

    相关文章

      网友评论

          本文标题:07-字典与集合的操作

          本文链接:https://www.haomeiwen.com/subject/cadexqtx.html