python之字典

来源:互联网 发布:esp8266的单片机教程 编辑:程序博客网 时间:2024/06/01 15:08
映射中的每个元素都有一个专业的名字,叫做键。字典是Python中唯一内建的映射类型,下来我们对其进行详细介绍:


(1)键类型


字典(dict)是一个存放无序的键值映射(key/value)类型数据的容器字典的键可以是数


字、字符串或者是元组,键必须唯一。在Python中,数字、字符串和元组都被设计成不可变类型,而常见的列表以及集合(set)都是可变的,所以列表和集合不能作为字典的键。键可以为任何不可变类型,这正是Python中的字典最强大的地方。


(2)创建


>>> d = {2:"二",3:'san'}
>>> type(d)
<type 'dict'>
>>> d[1] = 1
>>> d
{1: 1, 2: '\xb6\xfe', 3: 'san'}


>>> d = {}
>>> d[1] = 1
>>> d
{1: 1}


>>> d['cat'] = 'Lucy'
>>> d
{1: 1, 'cat': 'Lucy'}


dict3 = dict([("name","kitty"),("age",18)]) #利用dict函数将列表转换成字典 
  
dict4 = dict(name='kitty',age=18)      #利用dict函数通过关键字参数转换为字典 
  
dict5 = {}.fromkeys(["name","age"])   #利用fromkeys函数将key值列表生成字典,对应的值为None  {'age': None, 'name': None} 




(3)查找


dict是通过key来查找value,表示的是意义对应的关系,可以通过d[key]的方式来访问dict:


>>> d['cat']
'Lucy'
(4)遍历


>>> d = {}
>>> d['cat'] = 'Lucy'
>>> d['dog'] = 'Ben'
>>> for key in d:
    print(key + ":",d[key])


结果


cat: Lucy


dog: Ben


(5)修改与删除
>>> d = {2:"二",3:'san'}
>>> type(d)
<type 'dict'>
>>> d[1] = 1
>>> d
{1: 1, 2: '\xb6\xfe', 3: 'san'}
>>> d[2]='er'
>>> d
{1: 1, 2: 'er', 3: 'san'}
>>> d.pop(1)
1
>>> d
{2: 'er', 3: 'san'}


(6)获取字典相关操作
>>> [x for x in dir({}) if not x.startswith("__")]#查看字典的所有公共方法
['clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']


#【添加元素】  
dict1 = {} 
dict1["mykey"] = "hello world"   #直接给一个不存在的键值对赋值 即时添加新元素 
  
dict1[('my','key')] = "this key is a tuple"  #字典的键可以是任何一中不可变类型,例如数字、字符串、元组等 
  
#【键值对个数】 
print len(dict1) 
  
#【检查是否含有键】 
print "mykey" in dict1     #True 检查是否含有键为mykey的键值对 
print "hello" in dict1     #False 
  
#【删除】 


注:
dict.clear()                          删除字典中所有元素  
   
dict.copy()                          返回字典(浅复制)的一个副本  
   
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.values()                        返回一个包含字典中所有值的列表  
   
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.setdefault(key,default=None)   和方法set()相似,如果字典中不存在key 键,由dict[key]=default 为它赋值
(7)比较字典
当比较列表的时候,如果项的顺序是不完全相同,python会认为这些列表不同。对字典不是来说,不是这样。
>>> d1={1:1,2:2,3:3}
>>> d2={1:1,3:3,2:2}
>>> d1==d2
True
(8)优缺点


dict的第一个特点是查找速度快,而且查找的速度与元素的个数无关,而list的查找速度是随着元素的增加而逐渐下降的;第二个特点是存储的key-value序对是没有顺序的;第三个特点是作为key得到元素是不可变的,所以list不能作为key。


dict的缺点是占用内存大,还会浪费很多内容。
0 0
原创粉丝点击