Python基础(三)字典与集合

字典

Python中的字典可以看做是一种键值对表。其底层原理类似于Java中的HashMaP,都是散列表。其中每个数组的单元叫做bucket,每个bucket有两个部分,一个是键对象的引用。一种是值对象的引用。当
字典的特点:

  1. 无序,只能通过键来找到值
  2. 只能存储不可变的对象,例如整数,浮点数,字符,元组。但是列表,字典,集合这类可变对象不能作为键值。

字典的创建

  1. 可以通过{}或者dict()来创建对象
    a={‘name’=‘123’};
    b={name=‘123’};
    a=dict([(“name”,“gaoqi”)])
  2. 通过zip() 方式创建字典对象
    k=[‘name’,‘age’];
    v=[’‘123’’,‘123’];
    a = dict(zip(k,v));
  3. 通过fromkeys创建值为空的字典
    a = dict.fromkeys([name’,‘boy’]);

字典元素的访问

  1. 通过a[key]的方式返回,在访问空key的时候会出现异常
  2. 通过get返回对象,返回一个空值
  3. 通过items方法列出所有的键值对
  4. 通过keys,valuse方法列出所有的键值,所有values值
  5. 通过 in 检测键值是否在一个字典中,返回布尔值
    “name” in a
    >>>true

字典添加,修改,删除

  1. a[key] = newvalue 修改key对应的values,如果键不存在则新增。
  2. update()方法将新字典的所有键值对全部加到旧字典对象上
  3. 可以用del(a[“key”])删除对应的值。

序列解包

序列解包可以用于元组,列表,字典。序列解包可以让我们方面的对多个变量赋值,序列解包用于字典时,默认是对键进行操作;如果需要对键值进行操作,则需要使用items();如果需要对“值”进行操作,则需要使用values()

  1. x,y,z = (10,20,30);即x=10,y=20…
  2. s = {“name”:“123”,“age”,18}; a,b,c = s即默认将键值赋值给a,b,c。使用items将键值对付给a,b,c

总结

  1. 作为键的元素必须可以计算散列值,其中数字,字符串,元组都是可以计算的。
    自定义对象需要支持下面三点:
    - 支持hash对象
    - 支持通过_eq_()方法检测相等性
    - 若 a== b 等于真,则hash(a) == hash(b) 也应该等于true
  2. 字典在内存中消耗量大
  3. 键查询速度快O(1)
  4. 在达到字典容量的三分之二的时候会导致次序发生变化,因此不要在遍历时进行字典的修改

集合

集合无序可变,元素不能重复,类似于Set。可以通过set()方法将列表,元组转化为集合。

创建与删除

  1. 通过{}后者set方法创建集合。
  2. remove或者clear清空集合

集合的操作

  1. 并集:a|b ,a.union(b)
  2. 交集:a&b,a.insertion(b)
  3. 差集:a-b,a.difference(b)

分支选择

对于Python中,对于false,0,0.0,空值,none,空序列对象,空range对象,空迭代对象,都认为为false。对于其他合法的表达式都可以看做是条件表达式。但是条件表达式中不能存=

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章