字典

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) 也应该等于true2. 字典在内存中消耗量大
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。对于其他合法的表达式都可以看做是条件表达式。但是条件表达式中不能存=