python 的字典与集合

2018-10-20 18:03:34   最后更新: 2018-10-23 12:04:06   访问数量:106




前面两篇日志中,我们介绍了 python 的序列类型,包含字符串、列表和元组

python 序列与深浅拷贝

python 序列支持的所有操作

接下来我们就来介绍 python 映射类型

 

字典是 Python 语言中唯一的映射类型,是一种存储哈希表结构的容器类型

字典是 Python 中最强大的数据类型之一,它存储的数据是无序的,但是一般具有很好的性能

>>> dict1 = {} >>> dict2 = {'name': 'earth', 'port': 80} >>> dict1, dict2 ({}, {'port': 80, 'name': 'earth'})

 

 

fromkeys

字典的 fromkeys 可以将序列转换为字典,转换后的字典的 key 即是序列的元素,value 则是默认值参数

dict.fromkeys(seq[, value])

 

 

  • 示例:
>>> seq = ('hello', 'world', 'python') >>> dict = {}.fromkeys(seq) >>> print(dict) {'hello': None, 'world': None, 'python': None} >>> dict = {}.fromkeys(seq, 'techlog') >>> print(dict) {'hello': 'techlog', 'world': 'techlog', 'python': 'techlog'} >>>

 

 

字典值的访问

通过 [] 操作符可以访问字典中的值:

>>> dict1['port'] 80

 

 

但需要注意的是,一旦我们试图访问不存在的键,就会报出如下错误:

>>> dict2['server'] Traceback (innermost last): File "<stdin>", line 1, in ? KeyError: server

 

 

遍历

可以通过 key 遍历字典:

>>> dict2 = {'name': 'earth', 'port': 80} >>> >>>> for key in dict2.keys(): ... print 'key=%s, value=%s' % (key, dict2[key]) ... key=name, value=earth key=port, value=80 >>> >>> dict2 = {'name': 'earth', 'port': 80} >>> >>>> for key in dict2: ... print 'key=%s, value=%s' % (key, dict2[key]) ... key=name, value=earth key=port, value=80

 

 

删除字典或元素

del dict2['name'] # 删除键为“name”的条目 dict2.clear() # 删除 dict2 中所有的条目 del dict2 # 删除整个 dict2 字典 dict2.pop('name') # 删除并返回键为“name”的条目

 

删除整个字典的操作不常见,通常都是删除字典中的单个元素或是清除整个字典的内容

 

字典的比较

python3 取消了内建的 cmp 方法,但 >、<、== 操作符仍然保留着

字典的比较时按照下面的顺序进行的:

  1. 比较字典长度
  2. 比较字典的键,键比较的顺序和 keys()方法返回键的顺序相同
  3. 比较字典的值,如果两个字典的长度相同而且它们的键也完全匹配,则用字典中每个相同的键所对应的值进行比较

如果上面三步均完全匹配,那么两个字典就是相等的

 

和其他很多语言一样,python 也具有 set 容器

集合(set)是一个无序的不重复元素序列

可以使用大括号 { } 或者 set() 函数创建集合,但如果要创建新集合,必须使用 set(),否则创建的是空字典

集合(sets)有两种不同的类型,可变集合(set) 和 不可变集合(frozenset)

>>> s = set('cheeseshop') >>> s set(['c', 'e', 'h', 'o', 'p', 's']) >>> t = frozenset('bookshop') >>> t frozenset(['b', 'h', 'k', 'o', 'p', 's'])

 

 

集合操作符

下图展示了数学中的集合操作对应的 python 中的操作符:

 

 

访问元素

正如上面所说,集合是无序的,因此不能通过下标索引访问,但可以通过 in 操作符判断和遍历

>>> s = set('cheeseshop') >>> 'k' in s False >>> 'k' in t True >>> >>> for i in s: ... print i ... c e h o p s

 

 






读书笔记      龙潭书斋      python      python核心编程      set      集合      dict      字典      frozenset     


京ICP备15018585号