码迷,mamicode.com
首页 > 编程语言 > 详细

python-字典(dict)处理

时间:2016-01-15 12:40:32      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

字典是python语言中唯一的映射类型。

映射类型对象里哈希值(key,键)和指向的对象(value,值)是一对多的关系,通常被认为是可变的哈希表。

字典的对象是可变的,它是一个容器类型,能存储任意个数的python对象,其中也可包括其他容器类型。

字典中的数据是无序排列的。

字典中键与值用“:”分开、项与项之间用“,”分开、字典中值必须是唯一的,而值可以不唯一!

1.创建dict

简单的说字典就是用大括号“{}”括起来的键值对的集合。

一般形式:

>>> adict={‘name‘:‘fly‘,‘age‘:30,‘sex‘:‘man‘}
>>> bdict={}
>>> type(bdict)
<type ‘dict‘>
>>> type(adict)
<type ‘dict‘>

>>>

使用dict()函数:

>>> cdict = dict()
>>> type(cdict)
<type ‘dict‘>
>>> cdict
{}
>>> ddict = dict(([‘a‘,1],[‘b‘,2]))
>>> ddict
{‘a‘: 1, ‘b‘: 2}
>>> edict = dict(name=‘flyer‘,sex=‘man‘)
>>> edict
{‘name‘: ‘flyer‘, ‘sex‘: ‘man‘}
>>>
2、dict的增删改查

>>> adict = {‘age‘: 30, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}

adict[new_key] = value

>>> adict[‘telphone‘]= 1888888888

>>> adict

{‘age‘: 30, ‘telphone‘: 1888888888, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}

  • del adict[key]     #删除指定key的项
  • del adict             #删除整个字典
  • adict.pop(key)    #删除指定key的项
  • adict.clear()         #清空字典所有条目

>>> del adict[‘age‘]

>>> adict

{‘telphone‘: 1888888888, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}

>>> adict

{‘telphone‘: 1888888888, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}

>>> adict.pop(‘telphone‘)

1888888888

>>> del adict    #删除整个字典

如果删除的元素不存在

>>> adict = {‘age‘: 30, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}

>>> del adict[‘wife‘]

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

KeyError: ‘wife‘

>>> adict.pop(‘wife‘)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

KeyError: ‘wife‘

>>>

adict[old_key] = new_value

>>> adict

{‘age‘: 30, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}

>>> adict[‘name‘]=‘fhr‘

>>> adict

{‘age‘: 30, ‘name‘: ‘fhr‘, ‘sex‘: ‘man‘}

>>>

  • adict.has_key(‘key‘)   #有->True、无->False
  • in 、not in                  #如:‘key‘ in adict   有->True、无->False
  • adict.get(‘key‘)           #获得key的值,有则返回key的value,没有不显示
  • adict[‘key‘]                  #获得key的值,有则返回key的value,没有则报一个异常

>>> adict

{‘age‘: 30, ‘name‘: ‘fhr‘, ‘sex‘: ‘man‘}

>>> adict.has_key(‘name‘)

True

>>> adict.has_key(‘wife‘)

False

>>> ‘name‘ in adict

True

>>> ‘wife‘ in adict

False

>>>

>>> adict.get(‘age‘)
30
>>> adict.get(‘wife‘)
>>> print adict.get(‘wife‘)
None
>>> adict[‘age‘]
30
>>> adict[‘wife‘]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: ‘wife‘

>>>

3.映射类型操作符

标准类型操作符:+,-,*,/,<,>,<=,>=,==,!=,and,or,not

字典不支持拼接和重复操作符(+,*)

字典的比较

先比较字典的长度也就是字典元素个数,在比较键,然后比较值

>>> adict = {‘age‘: 30, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘,‘telphone‘:188888888}

>>> bdict = {‘age‘: 30, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}

>>> cdict = {‘age‘: 24, ‘name‘: ‘fly‘, ‘sex‘: ‘man‘}

>>> ddict = {‘age‘: 30, ‘name‘: ‘fly‘}

>>> edict = {‘age‘: 30, ‘name‘: ‘fly‘}

>>> cmp(adict,bdict)

1

>>> cmp(bdict,cdict)

1

>>> cmp(ddict,cdict)

-1

>>> cmp(ddict,edict)

0

>>>

4.字典的特性

字典的value可以是任何的python对象,key不行

    1).字典中的键是唯一的,如果同一个key被赋值两次,后一个value会被记住

>>> dict = {‘name‘:‘fj‘,‘name‘:‘fhr‘}

>>> dict

{‘name‘: ‘fhr‘}

>>>

    2).键必须是不可变的,可以用数,字符串或者元祖充当,但是列表不行。

>>> dict = {[‘name‘]:‘fjg‘,‘age‘:18}

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: unhashable type: ‘list‘

5.字典的内置函数&方法

  • adict.clear() : 删除字典内所有元素

>>> adict = {‘age‘: 30, ‘name‘: ‘fhr‘, ‘sex‘: ‘man‘}

>>> adict.clear()

>>> adict

{}

  • adict.copy() : 返回一个字典浅拷贝的副本
  • adict.fromkyes(S[,v]) : 创建并返回一个新字典,以S中的元素作为新字典的key,v做新字典中所有key的初始value。v默认为None
  • adict.get(key[,d]) :获得字典中key的value。如果key不存在,则返回d,d的默认值为None
  • adict.has_key(key):查询字典中是否有key,有则返回True,否则返回False
  • adict.items():返回一个包含所有(键,值)元组的列表
  • adict.interitems() :通过key:value迭代
  • adict.interkeys():通过key迭代
  • adict.intervalues():通过value迭代
  • adict.keys():返回一个包含字典所有key的列表
  • adict.pop(k[,d]):如果存在key,删除并返回k对应的value,如果key不存在,且指定了d的值,则返回d,如果没有指定d,则引发keyerror异常。
  • adict.popitem():随机删除任意一个元素并返回,如果adict是空的,则返回异常
  • adict.setdefault(key,default=‘  ‘):如果key存在则返回key的值,如果key不存在,则由adict[key]=default为key赋值
  • adict.update()
  • adict.values():返回一个包含字典所有value的列表
  • adict.viewitems()
  • adict.viewkeys()
  • adict.viewvalues()

python-字典(dict)处理

标签:

原文地址:http://www.cnblogs.com/fujiangong/p/5132912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!