• python-集合、字典


    集合和字典

    set(可变、无序、不重复)

    初始化

    #set()->new empty set ibject
    a=set()
    print(a)                        #输出:set()
    
    #set(iterable)->new set object
    print(set(range(5)))            #输出:{0, 1, 2, 3, 4}
    
    print(set(list(range(5))))      #输出:{0, 1, 2, 3, 4}
    
    s={}                            #1
    print(s)
    print(type(s))                  #输出:<class 'dict'>
    
    s1={(1,2),3,'a'}
    print(s1)                       #输出:{(1, 2), 'a', 3}
    
    s2={[1],(1,),1}                 #2
    print(s2)                       #TypeError: unhashable type: 'list'
    
    

    1当{}里没有任何值的时候,系统会判定为字典;

    2set元素必须要可以hash,也就是不可变的;

    注意:set可以迭代,但是没有索引因为他是无序的;

    set操作

    #set(elem)增加
    s={1,}
    s.add(2)
    print(s)                #输出:{1,2}
    s.add(1)
    print(s)                #输出:{1,2}
    #1
    
    #update(*other)
    #合并其他元素到set中,other必须是可迭代对象
    s1={'da',31,'dd',234,'f',25,}
    s2={312,"2",31,"312ds"}
    print(s1.update(s2))            #输出:None
    print(s1)                       #输出:{'f', 'da', 'dd', 234, '312ds', '2', 312, 25, 31}
    
    
    

    1如果元素存在,则什么也不做

    #remove(elem)
    #从set中移除一个元素,不存在抛异常
    a={'f', 'da', 'dd', 234, '312ds', '2', 312, 25, 31}
    print(a.remove('f'))            #输出:None
    print(a)                        #输出:{'2', 234, 'da', '312ds', 312, 25, 'dd', 31}
    
    #discard(elem)
    #从set中移除一个元素,不存在什么也不做
    b={234, '312ds', '2', 312, 25, 31}
    print(b.discard(234))               #输出:None
    print(b)                            #输出:{'2', 312, 25, '312ds', 31}
    #1
    
    #pop()->item
    #移除并返回任意元素
    c={312, 25, 31,1789}
    print(c.pop())
    print(c)
    
    #clear()
    #移除所有元素
    d={312, 25, 31,1789}
    print(d.clear())
    print(d)
    

    1在对比remove与discard,应该优先使用discard他的错误提示比较温和;

    注意:set为非线性无序的,所有自然没有改这一说,能删一个,增一个来模拟改

    字典(可变,无序的、可以不重复)

    初始化

    #空字典
    d1={}
    d2=dict()
    print(d1)
    print(d2)
    
    
    #使用key=value来初始化
    d3=dict(a=12,b=3)
    print(d3)                       #输出:{'a': 12, 'b': 3}
    
    #以下几种方法,必须是二元可迭代结构才能
    d4=dict(((1,'a'),(2,'b')))
    print(d4)                       #输出:{1: 'a', 2: 'b'}
    
    d5=dict(([1,'1'],[2,'2']))
    print(d5)                       #输出:{1: '1', 2: '2'}
    
    
    d6=dict([[1,'1'],[2,'2']])
    print(d6)                       #输出:{1: '1', 2: '2'}
    
    #dict(mapping,**kwarg)使用一个字典构建领一个字典
    d7=dict(d6,a=2)
    print(d7)
    
    #最简单的定义方法
    d8={'a':1,'q':3}
    print(d8)
    
    #类方法dict.fromkeys(iterable,value),用来统一赋值
    d=dict.fromkeys(range(5))
    print(d)
    
    d=dict.fromkeys(range(5),10)
    print(d)
    

    字典元素的访问

    #d[key],不存在抛异常
    d={1: '1', 2: '2', 'a': 2}
    print(d['a'])
    
    #get(key,[,default])  返回key对应的值value,后面可是设置缺省值,不存在返回None
    d={1: '1', 2: '2', 'a': 2}
    print(d.get(2,"exit"))    #输出:2 
    
    print(d.get(23,"no exit"))   #输出:no exit
    print(d)
    
    #setdefault(key,[,default])  返回key对应的值value,后面可是设置缺省值,不存在返回None
    print(d.setdefault(23,"no exit"))
    print(d)                       #输出:{1: '1', 2: '2', 'a': 2, 23: 'no exit'}
    #1
    

    1:由上述看来如果查看字典有不存的内容且要加入,那么就要用setdefault

    字典的增加和修改

    
    #d[key]=value,如果key不存在那么是添加,如果存在是修改
    d={1: '1', 2: '2', 'a': 2}
    d["wuyanzu"]="123"
    print(d)                #输出:{1: '1', 2: '2', 'a': 2, 'wuyanzu': '123'}
    
    #update([other])->None
    #使用另一个字典的kv来更新本字典,key不存在就添加,存在就覆盖
    d1=dict(apple='a',pear='p')
    print(d1.update(d))      #输出:None
    print(d1)                #输出:{'apple': 'a', 'pear': 'p', 1: '1', 2: '2', 'a': 2, 'wuyanzu': '123'}
    
    

    字典的删除

    a={1: '1', 2: '2', 'a': 2, 'wuyanzu': '123'}
    #pop(key,[,default])
    #key存在
    print(a.pop(1))                 #输出:1,返回的是key
    print(a)                        #输出:{2: '2', 'a': 2, 'wuyanzu': '123'}
    
    #key不存在,default存在
    a={1: '1', 2: '2', 'a': 2, 'wuyanzu': '123'}
    print(a.pop(3,"no exist"))       #输出:no exist
    
    #key不存在,default不存在
    a={1: '1', 2: '2', 'a': 2, 'wuyanzu': '123'}
    print(a.pop(3))                  #抛异常,keyerror
    
    a={1: '1', 2: '2', 'a': 2, 'wuyanzu': '123'}
    #popitem移除并返回任意一个键值对,直到空字典时,抛出异常
    print(a.popitem())
    
    print(a.clear())
    print(a)
    
    #输出
    ('wuyanzu', '123')
    None
    {}
    
    d={'a':1,'b':'b','c':[1,3,5]}
    #del
    del d['c']
    print(d)
    
    #输出:
    {'a': 1, 'b': 'b'}
    

    del删除是减少对象的引用,而不是删除内存里的引用的内容;

    字典遍历

    
    d={'a':1,'b':'b','c':[1,3,5]}
    #key遍历
    for k in d.keys():
        print(k)
    #输出
    a
    b
    c
    for k in d:
        print(d[k])			#默认也是对key进行遍历;
    
    
    #value遍历
    for v in d.values():
        print(v)
    #输出
    1
    b
    [1, 3, 5]
    
    #k,v都遍历
    for k,v in d.items():
        print(k,v)
    #输出
    a 1
    b b
    c [1, 3, 5]
    
    

    字典的key和set要求一致,必须是hashable(不可变类型);

  • 相关阅读:
    你能用多长时间停车?
    中国威胁论好像还挺严重的
    热爱生命
    lunix下shell脚本批量获取文件,批量修改文件内容
    sql数据操作的若干心得(二)向表中自动插入自增的ID
    Asp.net开发之旅动态产生控件
    Asp.net开发之旅GridView中嵌入DropDownList的一点心得
    Asp.net开发之旅开发环境
    Asp.net开发之旅简单的引用母版页
    Sql数据操作的若干心得
  • 原文地址:https://www.cnblogs.com/wuyanzu123/p/9451994.html
Copyright © 2020-2023  润新知