Python核心编程---读书笔记:第7章 映射和集合类型

第7章映射和集合类型

字典是映射类型,实现采用哈希值和指向的对象。

字典对象可变。

处理过程:对键执行哈希操作,根据计算结果在某个地址中存储你的值。

哈希表无序

Keys()或者values()返回列表

删除字典: dict1.clear()

删除字典元素: del dict1[‘name’], dict1.pop(‘name’):删除并返回值

7.2映射类型操作符

标准类型操作符: < .

查找操作符: []

键成员关系操作: in , not in

 

7.3映射类型的内建函数和工厂函数

7.3.1 标准类型函数[type() , str()和cmp()]

type():工厂方法,会会

str():返回字典的自复查un表示

字典比较:cmp(dict1 , dict2):

1)比较字典长度,dict1比dict2长,cmp()返回正值

2)长度相同,就比较键,

3)长度和键相同,比较值

 

dict():工厂函数,创建字典

字典复制:推荐用copy()比从原字典生成的快,这是一个浅拷贝,对当前

拷贝的字典进行操作时,会影响到原来的字典

dict2 = dict1.copy()

 

import copy

#字典拷贝用dict.copy()速度比较快
def dictCopy_test():
    dict1 = {'x':1 , 'y':2}
    dict2 = dict1.copy()
    print(str(dict2))

 

 

len(dict1):返回键值对的数目

 

hash():返回对象的哈希值,键必须是可哈希的

 

def hashTest():
    result = hash('hello world')
    print(result)

 

dict1.keys():返回所有键组成的列表

dict1.values():返回值组成的列表

dict1.items():返回所有键值对组成的列表

dict.iter():返回迭代子而非列表

dict.update(dict1):将字典dict1的键值对添加到字典dict中,重复的会被新的键值对来取代

dict.get(key,default=None)

dict.has_key(key)

 

7.5字典的键

不允许一个键对应多个值

键必须可哈希,不可变类型都是可哈希的,例如数字和字符串

实现了__hash__)的类可以返回整数,所以可以哈希

如果键是恶变对象,值可以变化,键变化,无法找到

元组必须只含有数字和字符串才可以作为键

 

7.6集合类型

set,集合是无需排列的可哈哈希值组成

集合创建用set()

访问集合中的值用in,not in

set1.remove(‘z’)

删除集合:del set1

 

7.7集合类型操作符

in, not in

两个集合相等:另一个集合中每个成员是另一个集合成员

set1 == set2

set1 < set2 :表示set1是set2的子集

联合(1): set1 | set2,会进行或操作

交集(&):返回一个集合,包含两个集合都存在的元素

差补:s – t,只属于集合s,部署于集合t

对称差分:异或,不能同时属于两个集合

 

def setOperationTest():
    set1 = set([1,2]) #集合需要用数组初始化
   
set2 = set([2,3])
    orSet = set1 | set2
    andSet = set1 & set2
    print(orSet)
    print(andSet)

 

7.7.3 集合类型操作符

Update (|=):在已存在集合中添加成员,和update()等价

&=和intersection_update()等价:保留与其他集合共有成员

-= 差更新,

^=

 

7.8内建函数

set()生成可变集合,可传入序列

frozenset()不可变集合

 

方法:

s.issubset(t)

s.issuperset(t)

s.union(t):并集

s.intersection(t):交集

s.difference(t):返回的集合是s的成员,不是t成员

s.symmetric_difference(t):返回新集合,是s或t成员

 

可变集合:

add(),remove(),discard(),pop(),clear()

s.discard(obj):从集合s中删除对象obj

s.pop():删除集合s任意对象并返回

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值