首页 > 技术文章 > Python字典

zz27zz 2017-08-19 13:46 原文

字典是Python中唯一内建的映射类型,是作为可变的哈希表实现的,字典中的值储存在特定的键下,键可以是数字、字符串或元祖。

创建字典:

phonebook={ 'Alice' : 'earth' , 'Beth' : 9102 }

fdict=dict((['x',1],['y',2]))   ->    fdict={'y':2,'x':1}

ddict={}.fromkeys(('x','y'),-1)    ->   {'y':-1,'x':-1}

edict={}.fromkeys(('foo','bar'))   ->  {'foo':None,'bar':None}

删除操作:

del dict['name']      删除键为name的项

dict.clear()     删除所有项

del dict     删除整个字典

dictl.pop('name')    删除并返回键为name的项

工厂函数:

dict()

dict(zip(('x','y'),(1,2)))  ->  {'y':2,'x':1}

dict([['x',1],['y',2]])  ->  {'y':2,'x':1}

dict(x=1,y=2)  ->  {'y':2,'x':1}

dict8={'y':2,'x':1}   dict9=dict(**dict8)   ->  dict9=dict8

由键-值对组成,键是唯一的,值不唯一.键重复时取最后一个。是一种无序的数据集

所有不可变的类型都是可哈希的,可哈希的类型都可以作为字典的键。

基本字典操作 len(d) 返回字典d中的键值对组合的数量
  d[k] 返回字典d中键k的值
  d[k]=v 将值v关联到字典d中键k上
  del d[k] 删除键为k的项
  k in d 检查d中是否含有键为k的项

例子:

Peple={

  'Alice':{

    'phone':'2312',

    'addr':'foo driver 23'

  }

  'Beth':{

    'phone':'4453',

    'addr':'baz vav'

  }

访问里面的项目应该是people[name][key]

 

字典的格式化字符串:

phone {'Beth':'9102','Alice':'2321'}

"Alice's phone number is %(Alice)s." % phone

 

字典中的方法:

clear d.clear() 清除了字典d中的所有值 无返回值
copy y=x.copy() 浅复制  
deepcopy dc=deepcopy(d) 深复制   
fromkeys 

{}.fromkeys(['name','age'])

返回{'age':None,'name':None}

使用给定的键建立新的字典,每个键对应一个默认的None  
get 

d['name']

d.get('name')

不存在会报错

不存在不会报错,返回None

 
has_key d.has_key('name')  是否含有特定的键,相当于k in d 返回布尔值
items/iteritems  d.items() 将字典中所有项以列表形式返回 返回键值对形式的列表 
keys/iterkeys   

将字典中的键以列表形式返回

iterkeys返回针对键的迭代器

 
pop  d.pop('x')  移出字典d中键为x的项 返回值为键x的值 
popitem  d.popitem()  返回字典d中随机项(键值),并从原字典中删除 返回随机元祖,一对键值
setdefault  d.setdefault('name1','aaa') 

查找键为name1的值,并返回键name1的值

若键name1不存在,则给d字典添加新的键值‘name1’:'aaa'

返回键值
update  d.update(x) 把字典x中的值更新到字典d上,若有相同的键则会进行覆盖  无返回值 
values/itervalues  d.values() 返回字典d中的值,不包含键,itervalues返回值的迭代器  以列表形式返回字典值
dict      

 两个列表组合成一个字典:

>>> a = [1,2,3,4]
>>> d = ['fa','fb','fc','fd','fe']
>>> dict(zip(a,d))
{1: 'fa', 2: 'fb', 3: 'fc', 4: 'fd'}

推荐阅读