Python核心编程学习笔记-Python核心编程第七章

学习笔记-Python核心编程第七章
1、字典是Python中唯一的映射类型,其中哈希值(键)和指向对象(值)是一对多的关系。
2、字典对象可变,且是一个容器对象,能储存任意多个对象,包括容器类型。
3、映射不要求数字做索引来获取对应数据,可以通过键(key)直接映射到值,这就是为什么叫映射类型。
4、字典是无序的数据集,因为哈希结构在存储时只是根据键来计算,并选择一个随机位置来储存值(value)。因为用键查询很快,所以哈希表有着很好的性能,同理字典也是。
5、工程方法dict()
fdict = dict((['x',1],['y',2]))
fdict
{'y': 2, 'x': 1}
6、内建方法 fromkeys()
mydict = {}.fromkeys(('x','y'),(-1,-2))
mydict
{'y': (-1, -2), 'x': (-1, -2)}
值(-1,-2)不填写,默认为 None
7、从Python2.2开始,可以用迭代器来轻松访问类序列对象(比如字典和文件),来获取循环使用的键值对。
for key in fdict:
print 'key = %s,value = %s'%(key,fdict[key])
key = y,value = 2
key = x,value = 1
8、访问不存在的键,会提示 KeyError 的错误。我们可以使用 has_key() 方法,或者从2.2用 in 或者是 not in 。最好使用后者,因为前者可能被淘汰。
返回 True 或者 False
9、字典的键需要是可哈希(即可以直接通过键映射到值)的,所以只能字符串和数值(因为他们是不可变类型)。
注意点1:键的数值相同,对应的value即相同,比如1和1.0
注意点2:我们知道元组是不可变的,那元组可以做键吗?答案是,因为元组可能不是一成不变的,所以用元组做有效的键,必须要加限制:元组中只包括像
数字和字符串这样的不可变参数,才可以作为字典中有效的键。
10、如何更新字典
fdict['x'] = 11 #更新
fdict['z'] = 33 #新增
{'y': 2, 'x': 11, 'z': 33}
11、删除字典元素和字典
del fdict['x'] #删除元素
fdict.clear() #清空字典
del fdict  #删除字典(很少见)
fdict.pop['x'] #删除并返回键位'x'的条目   
12、映射类型操作符
字典可以和所有的标准类型操作符一起工作,但是不支持拼接和重复,这些操作符对序列有意义,但是对映射类型行不通。
字典如何比大小:可以通过cmp(dic1,dic2)方法,同样适用。
先比较元素个数,多者为大;个数相同,比较键大小,大着为大;键相同,比较值,大着为大;值也相同,字典相等(匹配)。
键查找操作符[]
成员关系操作符 in 和 not in
13、映射类型相关的函数
dict()  工程函数,被用来创造字典,不提供参数会成为空字典。当参数是可迭代的,比如序列,迭代器或者支持迭代的对象,那可迭代的元素必须是成对出现的,每个对中,
第一个元素是键,第二个是值。
字典内建方法copy()可以生产一个字典的浅复制给另外的字典,如 adic = fdict.copy()
len() 返回‘键值’对的数目
hash() 内建函数 hash()本身并不是为字典设计的方法, 但它可以判断某个对象是否可以做一个字典的键。


14、字典内建方法
keys()  values()  items() 返回的都是列表
fdict = {1:2,'s':4}
print fdict.keys()
结果:[1, 's']
sorted() 内建函数返回一个有序迭代子,比如
dict = {1:'one',3:'three'}
for eachkey in sorted(dict):
    print 'dict key',eachkey,'has value',dict[eachkey]
结果:
dict key 1 has value one
dict key 3 has value three
update() 方法可以用来将一个字典的内容添加到另外一个字典中。字典原有的键如果与新添加的键重复,
那么重复键所对应的的值将被新的值覆盖。比如
dict = {1:'one',2:'two'}
dict_n = {1:'one',2:'two_n',3:'three'}
dict.update(dict_n)
print dict
结果是:
{1: 'one', 2: 'two_n', 3: 'three'}
copy()方法,请注意,这里的copy,即字典的copy是浅复制,即内容是旧,对象是新的。举例
dict = {1:'one',2:'two'}
dict_c = dict.copy()
print dict_c
结果是:{1: 'one', 2: 'two'}
get()方法,如果存在对应的键,则返回键对应的值,不存在此键则返回默认值,否则返回None。举例:
dict = {1:'one',2:'two'}
print dict.get(1)
print dict.get(3,'没有这个键')
print dict.get(3)
结果:
one
没有这个键
None
setdefault()方法,是从2.0才有的内建方法,检查字典中是否含有某个键,如果存在就可以返回对应的值,不存在的话,将这个键值对添加到字典中,并返回值。
15、字典的键,不允许一个键对应多个值
16、集合类型,分为可变集合(set)和不可变集合(frozenset)。可变集合顾名思义可以添加和删除元素,不可变集合则不允许。另外只有不可变集合是可哈希的,可以作为字典的键,或是集合中的一个成员。
17、集合被创建的唯一方法是用集合的工厂方法set()和 frozenset()
18、集合类型操作符
in,not in
==,!=
<=,<,>,>= 子集/超集
联合(|) 合并两个集合的成员
交集(&) 取交集
差补(-) 举例: s - t 指的是该集合中的元素,只属于s不属于t
对称差分(^) 只属于s 或者 t 的元素






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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值