python 字典与集合的内建方法

2018-10-23 12:18:42   最后更新: 2018-10-23 15:16:30   访问数量:105




上一篇日志中,我们介绍了 python 的字典与集合:

本篇日志中,我们来介绍他们的内建函数与方法

 

dict()

dict 工厂函数被用来创建字典,下面的例子展示了 dict 方法的几种用法:

>>> dict(zip(('x', 'y'), (1, 2))) {'y': 2, 'x': 1} >>> dict([['x', 1], ['y', 2]]) {'y': 2, 'x': 1} >>> dict([('xy'[i-1], i) for i in range(1,3)]) {'y': 2, 'x': 1} >>> dict(x=1, y=2) {'y': 2, 'x': 1} >>> dict8 = dict(x=1, y=2) >>> dict8 {'y': 2, 'x': 1} >>> dict9 = dict(**dict8) >>> dict9 {'y': 2, 'x': 1}

 

 

dict9 = dict(**dict8) 的方式并不推荐使用,而是更加推荐下面的用法:

>>> dict9 = dict8.copy() >>> dict9 {'y': 2, 'x': 1}

 

 

set()、frozenset()

set()和 frozenset()工厂函数分别用来生成可变和不可变的集合

如果不提供任何参数,默认会生成空集合

如果提供一个参数,则该参数必须是可迭代的,即,一个序列,或迭代器,或支持迭代的一个对象,例如:一个文件或一个字典

>>> set() set([]) >>> set([]) set([]) >>> set(()) set([]) >>> set('shop') set(['h', 's', 'o', 'p']) >>> >>> frozenset(['foo', 'bar']) frozenset(['foo', 'bar']) >>> >>> f = open('numbers', 'w') >>> for i in range(5): ... f.write('%d\n' % i) ... >>> f.close() >>> f = open('numbers', 'r') >>> set(f) set(['0\n', '3\n', '1\n', '4\n', '2\n']) >>> f.close()

 

 

内建函数 len()很灵活。它可用在序列、映射类型和集合上

对字典调用 len(),它会返回所有元素(键-值对)的数目,对 set 调用 len() 则返回 set 中元素的个数:

>>> dict2 = {'name': 'earth', 'port': 80} >>> dict2 {'port': 80, 'name': 'earth'} >>> len(dict2) 2 >>> >>> s = set(u) >>> s set(['p', 'c', 'e', 'h', 's', 'o']) >>> len(s) 6

 

 

字典的内建方法
方法名字操作
dict.clear()删除字典中所有元素
dict.copy()返回字典(浅复制)的一个副本
dict.fromkeys(seq, val=None)创建并返回一个新字典,以 seq 中的元素做该字典的键,val 做该字典中所有键对应的初始值(如果不提供此值,则默认为 None)
dict.get(key, default=None)对字典 dict 中的键 key,返回它对应的值 value,如果字典中不存在此键,则返回 default 的值(注意,参数 default 的默认值为 None)
dict.has_key(key)如果键(key)在字典中存在,返回 True,否则返回 False. 在 Python2.2 版本引入 in 和 not in 后,此方法几乎已废弃不用了,但仍提供一个可工作的接口
dict.items()返回一个包含字典中(键, 值)对元组的列表
dict.keys()返回一个包含字典中键的列表
dict.iter()方法 iteritems(), iterkeys(), itervalues()与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表。
dict.pop(key [, default])和方法 get()相似,如果字典中 key 键存在,删除并返回 dict[key],如果 key 键不存在,且没有给出 default 的值,引发 KeyError 异常。
dict.setdefault(key, default=None)和方法 set()相似,如果字典中不存在 key 键,由 dict[key]=default 为它赋值
dict.update(dict2)将字典 dict2 的键-值对添加到字典 dict
dict.values()返回一个包含字典中所有值的列表

 

字典的内建方法
方法名字操作
s.issubset(t)如果 s 是 t 的子集,则返回 True,否则返回 False
s.issuperset(t)如果 t 是 s 的超集,则返回 True,否则返回 False
s.union(t)返回一个新集合,该集合是 s 和 t 的并集
s.intersection(t)返回一个新集合,该集合是 s 和 t 的交集
s.difference(t)返回一个新集合,该集合是 s 的成员,但不是 t 的成员
s.symmetric_difference(t)返回一个新集合,该集合是 s 或 t 的成员,但不是 s 和 t 共有的成员
s.copy()返回一个新集合,它是集合 s 的浅复制

 

字典的内建方法
方法名字操作
s.update(t)用 t 中的元素修改 s, 即,s 现在包含 s 或 t 的成员
s.intersection_update(t)s 中的成员是共同属于 s 和 t 的元素。
s.difference_update(t)s 中的成员是属于 s 但不包含在 t 中的元素
s.symmetric_difference_update(t)s 中的成员更新为那些包含在 s 或 t 中,但不是 s 和 t 共有的元素
s.add(obj)在集合 s 中添加对象 obj
s.remove(obj)从集合 s 中删除对象 obj;如果 obj 不是集合 s 中的元素(obj not in s),将引发 KeyError 错误
s.discard(obj)如果 obj 是集合 s 中的元素,从集合 s 中删除对象 obj;
s.pop()删除集合 s 中的任意一个对象,并返回它
s.clear()删除集合 s 中的所有元素

 






读书笔记      技术帖      龙潭书斋      python      python核心编程      set      map      python3      dict     


京ICP备15018585号