zoukankan      html  css  js  c++  java
  • dict和set

    dict字典{}

    Python内置了字典:dict(dictionary),在其他语言中称为map,使用键--值(key--vale),查找速度极快。

    特点:键是唯一的,值的内容是无序的。
    

    举个例子:加入你想要根据同学的姓名查看对应的成绩,用list实现的话。

    names =["aaa","bbb","ccc"]
    scores = [77,88,99]

    给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores中取出对应的成绩。这样的话,list越长,查找的速度就越慢,耗时就越长。

    查看

    如果用dict实现的话,只需要建一个姓名--成绩的对照表就可以了。

    >>>d={"aaa":77,"bbb":88,"ccc":99}
    >>>d["aaa"]
    77
    

    dict.keys() 返回所有的key值到一个列表里。
    dict.values() 返回所有的value值到一个列表里。

    但是想要直接调用还需要转化成list(dict.keys())

    增加元素

    将数据放入dict中,除了初始化指定外,还可以通过key放入。

    >>>a["aaa"]
    77
    >>>a["aaa"]=12
    >>>a["aaa"]
    12
    

    如果key不存在,dict就会新增元素。

    通过 in 判断key是否存在

    存在返回True,不存在返回False

    >>>"ddd" in a
    False
    >>>"aaa" in a
    True
    

    通过dict提供的get方法。

    存在返回value值,不存在返回None不会有显示,也可以自己设定返回值。

    >>>a.get("ddd")
    >>>a.get("ddd",-1)
    -1
    

    删除元素

    要删除一个dict.pop(k,d=none)

    删除指定K的元素。成功就返回对应的值,失败则返回自定义的d,如果没有定义则报错。
    

    随机删除一个dict.popitem()

    del dict[K] :删除指定键的元素。

    循环

    for i in dict:
    	print(i,dict[i])  i打印dict中的k,通过K打印对应的value,
    

    更新,dict.update(dict2)

    将dict2中的元素,追加到dict中。如果有重复k键的,用dict2中的value覆盖。

    a={1:2,2:3,3:4}
    b={3:5,4:5}
    a.update(b)
    a={1:2,2:3,3:5,4:5}
    b={3:5,4:5}
    

    set

    set和dict类似,也是一组key的集合,但不存储value。而且set是无序的。

    要创建一个set,需要提供一个list作为集合的输入:

    >>>a = set([1,2,3])
    >>>a
    {1,2,3}
    

    set中重复的元素会被自动过滤掉:

    >>>s = set([1,1,2,3,4,5,6,7,7,7,1])
    >>>s
    {1,2,3,4,5,6,7}
    

    添加

    可以通过add(key)方法添加元素到set中。如果重复添加,虽然可以,但是不会有效果。

    >>>s =set([1,2,3])
    >>>s.add(4)
    >>>s
    {1,2,3,4}
    

    删除

    可以通过rmove(key)方法删除元素:

    >>>s.rmove(4)
    >>>s
    {1,2,3}
    

    可以通过discard()方法删除元素和rmove一样。

    discard()和rmove()的区别:
    rmove()如果要删除的元素不存在,则报错。
    discard()如果要删除的元素不存在,不会报错。
    

    也可以通pop()方法删除,不过该方法是随机删除的的。

    交集,并集,差集,对称差集,子集

    set可以堪称是数学意义上的无序和无重复的集合。因此,两个set可以进行数学意义上的交集,并集等操作。

    >>>s1 = set([1,2,3])
    >>>s2 = set([2,3,4])
    >>>s1 & s2   #交集 s1.intersection(s2)
    {2,3}
    
    s1.update(s2) #将s2中的元素加入到s1中,赋值给s1
    
    >>>s1 | s2    #并集 s1.union(s2) ,依然是自动删除重复元素。
    {1,2,3,4}
    
    >>>s1 - s2    #相对补集,差集 s1.differrnce(s2)
    {1}
    
    >>>s1.symmetric_difference(s2) #对称差集,把互相不一样的打印出来。
    >>>s1 ^ s2
    {1,4}	
    
    s1.issubset(s2) 判断s1是不是s2的子集 s1 < s2
    s1.issuperset(s2) 判断s1是不是s2父集 s1 > s2
    
    s1.isdisjoint(s2)  如果s1和s2没有交集,则返回True,反之返回False	
    

  • 相关阅读:
    这几天的读书心得
    随机接入过程的步骤
    从tlb,ocx,dll类型库中提取com组件的CLSID
    unicode字符集下CStdioFile无法写入中文的解决方案
    多线程CString参数传递问题
    yii2.0 报错Cookievalidationkey Must Be Configured With A Secret Key
    windows下的phpunit安装
    xdebug 一直报错 upstream timed out (110: Connection timed out) while reading response header from upstream
    session与cookie
    【转】LVS负载均衡之session解决方案 持久连接
  • 原文地址:https://www.cnblogs.com/G-YUE/p/6653081.html
Copyright © 2011-2022 走看看