zoukankan      html  css  js  c++  java
  • 4、Python基本数据类型之字典,集合

    一、字典

        在python中定义一个字典的语法为:

    1 dic = {1:"张三",2:"李四"}

    字典的每一个元素由key:value组成,这类似于一个学号对应一个学生,我们可以通过学号(key)来查看对应的学生姓名(value)。字典有以下2个特点:1、无序,2:key是唯一的

    那下面我们一起看以下字典的基本操作(增删改查)。

    增加一个元素:

    1 dic = {1:"张三",2:"李四"}
    2 dic["3"] = "王五"  #增加王五,执行结果为:{1: '张三', 2: '李四', '3': '王五'}
    3 print(dic)

    字典的增加元素比较奇葩,需要注意一下,我们知道字典的key是唯一的,那么如果我们增加下面一条语句,结果会是怎么样呢?

    1 dic[1] = "王五"

    python解释器在执行到这个条语句的时候,发现字典中已经存在key为1的元素时,就会执行一个更新操作,将key为1的value改成"王五"。

    删除一个元素:

    1 dic = {1:"张三",2:"李四"}
    2 #del dic[1]  #删除key为1的元素 python通用方法执行结果{2: '李四'}
    3 #dic.pop(2) #专属删除方法,执行结果{1: '张三'}
    4 dic.popitem() #随机删除一个元素
    5 print(dic)

    如果要删除的key不在字典,解释器会抛出异常,因此我们在删除一个元素的时候,应该养成先判断再删除的习惯,正确的删除姿势如下:

    1 if "1" in dic:
    2     dic.pop("1")

    修改元素:

    1 dic = {1:"张三",2:"李四"}
    2 dic[1] = "王五" #将key为1的元素的value值修改为"王五"
    3 print(dic)

    或许有人会想,如果我修改的key在字段中不存在会出现什么情况?我只能呵呵一下,这不就是添加元素的语法吗?例如:dic[3]="赵六"。

    查找元素:

    1 dic = {1:"张三",2:"李四"}
    2 print(dic.get(1))  #通过key值查找对应的value 执行结果 张三
    3 print(dic.get(3)) #key值不存在于字典中,执行结果为none
    4 print(dic[1]) #通过key查询对应的value,执行结果张三
    5 print(dic[3]) #key值不存在,执行报错

    综上所述:查找元素主要通过dic[key]和dic.get(key)两种方法,区别在于,当元素的key不存在时,dic[key]会抛异常而dic.get(key)不会。

    其它操作:

    1 dic = {1:"张三",2:"李四"}
    2 print(dic.keys(),dic.values()) #打印字典的key和value
    3 dic.setdefault(3,"赵六") #添加一个元素,其和dic[key]=value不同的是,该方法如果key值已存在于字典中,不做更新
    4 dic_1 = {3:"赵哥",4:"老七"}
    5 dic.update(dic_1) #用一个字典去更新另一个字典 执行结果{1: '张三', 2: '李四', 3: '赵哥', 4: '老七'}
    6 print(dic.items()) #将字典转换为列表,每一个元素时一个元组
    7 print(dic)

    多级字典嵌套:

     1 av_catalog = {
     2     "欧美":{
     3         "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
     4         "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
     5         "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
     6         "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
     7     },
     8     "日韩":{
     9         "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    10     },
    11     "大陆":{
    12         "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    13     }
    14 }
    15 
    16 av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"
    17 print(av_catalog["大陆"]["1024"])

    二、集合

    先来看一下集合的定义:

    1 set_1 = set([1,3,5,7,8,9])

    集合的特点类似于字典,1、无序,2,去重。这里集合的定义个人感觉和我们高中学习的集合的概念一模一样

    集合的基本操作:

     1 set_1 = set(["1","3","5","7","9","10"])
     2 set_2 = set(["2","4","5","6","9","8","8"])
     3 # print(set_1,set_2)
     4 print(set_2.union(set_1),set_2|set_1)#求并集 执行结果 {'5', '8', '6', '9', '7', '2', '10', '1', '3', '4'}
     5 print(set_1.intersection(set_2),set_1&set_2) #求交集 执行结果 {'9', '5'}
     6 print(set_1.difference(set_2),set_1-set_2) #求差集 执行结果{'7', '1', '10', '3'}
     7 print(set_1.symmetric_difference(set_2),set_1^set_2) #对称差集 执行结果{'6', '7', '1', '3', '4', '8', '2', '10'}
     8 print(set_1.issubset(set_2),set_1.issuperset(set_2)) #子集和父集 执行结果 False False
     9 print(set_1.isdisjoint(set_2)) #是否没有交集 执行结果 False
    10 set_1.add("123")    #添加一个元素
    11 set_1.update([3,2,1]) #批量添加
    12 set_1.remove("123") #删除一个元素 元素不存在时报错
    13 set_1.discard("123")#删除一个元素 元素不存在时 不报错
    14 set_1.pop() #删除集合中任意一个元素

    集合的操作也符合我们对集合的一贯的理解。

  • 相关阅读:
    JavaScript中{}+{}
    网站性能优化
    C++是如何从代码到游戏的?
    C++是如何从代码到游戏的?
    【力扣】至少是其他数字两倍的最大数 中速题解
    代码编辑器选择Atom还是VScode?
    TIOBE 4 月榜单:少儿编程语言 Scratch 进入 TOP 20
    熟悉一下oncontextmenu事件的知识
    input属性type为file打开文件资源管理器时,如何限制多次选取或只能一次选取的行为
    HTML5的拖放事件
  • 原文地址:https://www.cnblogs.com/win0211/p/8288119.html
Copyright © 2011-2022 走看看