Python字典

来源:互联网 发布:日本福岛核泄漏知乎 编辑:程序博客网 时间:2024/05/01 20:15

原地址:http://www.cnblogs.com/BeginMan/p/3156960.html

一、映射类型

我理解中的映射类型是:键值对的关系,键(key)映射值(value),且它们是一对多的关系。
字典是Python唯一的映射类型。

扩展1:哈希表
一种数据结构,值是根据相关的键进行数据存储的,形成"键-值对"(key-value pairs),哈希表中的值是没有顺序的。

扩展2:映射类型与序列类型的区别

1):访问方式不同,序列类型用数字类型的键,而映射类型可以用其他对象类型做键(一般式字符串)

复制代码
>>> lis = ['a','b','c']>>> lis[2]'c'>>> dic = {'name':'a','father':'b','mother':'c'}>>> dic['mother']'c'
复制代码

2):存储类型不同,映射类型的键,直接或间接地与值相关。
3):序列类型,有序之列;映射类型则无序之列

二、字典

1、工厂方法dict():

复制代码
>>> tu=(['a','b'],['xx','yy'])>>> tu(['a', 'b'], ['xx', 'yy'])>>> fdict = dict(tu)>>> fdict{'a': 'b', 'xx': 'yy'}
复制代码

2、访问形式:

复制代码
>>> dic{'father': 'b', 'name': 'a', 'mother': 'c'}>>> for obj in dic:    print objfathernamemother>>> for obj in dic.keys():    print obj    fathernamemother>>> for obj in dic.values():    print obj    bac>>> for obj in dic.items():    print obj    ('father', 'b')('name', 'a')('mother', 'c')>>> 
复制代码

3、has_key()、in、not in来检查是否有某个键,has_key()已慢慢弃用了。

4、有则更新,无则添

5、删除

del dic['name']   #删除元素del dic #删除整个

6、操作符
[]、和 in、not in

>>> if 'name' in dic:    print dic['name']a

7、相关函数
dict():创建字典
len():返回键值对数目
hash(obj):返回obj的哈希值

8、内建方法
dict.clear():删除字典中所有元素
dict.copy():浅copy
dict.formkeys():创建字典
dict.get(key,default=None):返回对应键值
dict.has_key():键是否存在
dict.items():返回字典中键值对元祖的列表
dict.keys():键的列表dict.values():值的列表
......

复制代码
>>> dic.keys()['father', 'name', 'mother']>>> dic.values()['b', 'a', 'c']>>> dic.get('name')'a'
复制代码

 三、注意

1、不允许一个键对应多个值,一个键只能对应一项
2、当键发生冲突时,取最后一个。
3、Python不会检查键的冲突,也不会因为键的冲突而产生错误,如果检查每个键是否冲突势必会占用很多内存。

>>> dic={'a':'ss','a':"xxxx"}>>> dic{'a': 'xxxx'}

4、键必须是可哈希的。
所有不可变类型都是可哈希的,不可变类型如(列表、字典)则不能。
不可变类型:string,integer,tuple、
可变类型:list,dict

5、值相同的数字表示相同的键,如1和1.0的哈希值是相同的,因此它们是相同的键。

>>> dic={1:'a',1.0:'b'}>>> dic{1: 'b'}

 

作者:BeginMan
出处:http://www.cnblogs.com/BeginMan/
提示:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: Python入门
原创粉丝点击