字典与集合
字典
字典是另一种可变容器模型,且可存储任意类型对象。和之前的字典一样,存放key-value键值对。
每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
注意:
- 键必须是唯一的,但值则不必。不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
- 值可以取任何数据类型,但键必须是不可变对象,为了保证Hash算法的正确性。如字符串,数字或元组。而 list 是可变的,不能作为 key。
访问字典里的值
把相应的键放入到方括号中,如下实例:
如果用字典里没有的键访问数据,会输出错误。
避免key不存在的错误
有两种方法:
1、通过 in 判断是否存在。
2、通过 dict 的内置函数 get() ,不存在则返回None,或自己指定值。
修改字典
添加键值对:除了初始化时添加,还可以通过 key 来添加,这与C#不太一样,需要注意。
更新和删除键值对:直接通过键来修改和删除,删除时用 del 语句。
清空字典:用字典的内置方法 clear() 。
del 也可删除整个字典:
字典内置函数&方法
内置函数:
- len(dict) 计算字典元素个数,即键的总数。
- str(dict) 输出字典,以可打印的字符串表示。
- type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。
内置方法:
- radiansdict.clear() 删除字典内所有元素.。
- radiansdict.copy() 返回一个字典的浅复制。
- radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值。
- radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值。
- key in dict 如果键在字典dict里返回true,否则返回false。
- radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组。
- radiansdict.keys() 返回一个迭代器,可以使用 list() 来转换为列表。
- radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default。
- radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里。
- radiansdict.values() 返回一个迭代器,可以使用 list() 来转换为列表 。
- pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
- popitem() 随机返回并删除字典中的最后一对键和值。
集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,…}
或者
set(value)
创建一个 set 需要提供一个 list 作为输入集合(会去掉重复元素):
集合的基本操作
添加元素
用 add(x) 方法。将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
s.update( x )
x 可以有多个,用逗号分开。
移除元素
用 remove() 方法。将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:
s.discard( x )
我们也可以设置随机删除集合中的一个元素,语法格式如下:
s.pop()
set 可看做数学意义上的无序和无重复元素的集合,因此可以做交集、并集等操作。
清空集合
用 clear() 方法。
集合内置方法
- add() 为集合添加元素。
- clear() 移除集合中的所有元素。
- copy() 拷贝一个集合。
- difference() 返回多个集合的差集。
- difference_update() 移除集合中的元素,该元素在指定的集合也存在。
- discard() 删除集合中指定的元素。
- intersection() 返回集合的交集。
- intersection_update() 返回集合的交集。
- isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
- issubset() 判断指定集合是否为该方法参数集合的子集。
- issuperset() 判断该方法的参数集合是否为指定集合的子集。
- pop() 随机移除元素。
- remove() 移除指定元素。
- symmetric_difference() 返回两个集合中不重复的元素集合。
- symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
- union() 返回两个集合的并集。
- update() 给集合添加元素。