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

python 字典操作

时间:2015-07-25 18:28:43      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:python

1、什么是字典?

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

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

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

字典类型与序列类型的区别:

1.存取和访问数据的方式不同。
2.序列类型只用数字类型的键(从序列的开始按数值顺序索引);
3.映射类型可以用其他对象类型作键(如:数字、字符串、元祖,一般用字符串作键),和序列类型的键不同,映射类型的键直

4.接或间接地和存储数据值相关联。
5.映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排列的。
6.映射类型用键直接“映射”到值。

字典是Python中最强大的数据类型之一。

2、如何创建字典和给字典赋值

一般形式:

dict = {}
dict = {key1:value2, key2:value2, …}

关键字参数创建字典,如:adict= dict(name=‘allen‘,age=‘40′)
或用fromkeys()方法,如,adict = {}.fromkeys((‘x‘,‘y‘), -1) 这样创建的字典的value是一样的,若不给值,默认为None。

从Python 2.2 版本起 
>>> fdict = dict(([‘x‘, 1], [‘y‘, 2])) 
>>> fdict 
{‘y‘: 2, ‘x‘: 1} 

从Python 2.3 版本起, 可以用一个很方便的内建方法fromkeys() 来创建一个"默认"字典, 字 
典中元素具有相同的值 (如果没有给出, 默认为None): 
>>> ddict = {}.fromkeys((‘x‘, ‘y‘), -1) 
>>> ddict 
{‘y‘: -1, ‘x‘: -1} 
>>> 
>>> edict = {}.fromkeys((‘foo‘, ‘bar‘)) 
>>> edict 
{‘foo‘: None, ‘bar‘: None} 

#!/usr/bin/python

seq = ('name', 'age', 'sex')

dict = dict.fromkeys(seq)
print "New Dictionary : %s" %  str(dict)

dict = dict.fromkeys(seq, 10)
print "New Dictionary : %s" %  str(dict)

结果:

New Dictionary : {'age': None, 'name': None, 'sex': None}
New Dictionary : {'age': 10, 'name': 10, 'sex': 10}

特点:
1、键与值用冒号“:”分开;
2、项与项用逗号“,”分开;
3、字典中的键必须是唯一的,而值可以不唯一。

Python字典操作


dict = {‘ob1‘:‘computer‘, ‘ob2‘:‘mouse‘, ‘ob3‘:‘printer‘}

 

技巧:

字典中包含列表:dict={‘yangrong‘:[‘23‘,‘IT‘],"xiaohei":[‘22‘,‘dota‘]}

字典中包含字典:dict={‘yangrong‘:{"age":"23","job":"IT"},"xiaohei":{"‘age‘:‘22‘,‘job‘:‘dota‘"}}

增加字典元素

>>> nameinfo={}

>>> nameinfo[‘a1‘]=‘yangrong‘   #若字典里有a1主键,则覆盖原来的值,没有,则添加

>>> nameinfo

{‘a1‘: ‘yangrong‘}

 

遍历字典主键与键值

>>> for k, value innameinfo.items():

...  print k,value

...

a1 yangrong

 

查看字典所有主键

>>> dict = {‘ob1‘:‘computer‘,‘ob2‘:‘mouse‘, ‘ob3‘:‘printer‘}  

>>>

>>>

>>> dict.keys()

[‘ob2‘, ‘ob3‘, ‘ob1‘]

 

判断字典中是否有该主键

>>> dict.keys()

[‘ob2‘, ‘ob3‘, ‘ob1‘]

>>> dict.has_key(‘ob2‘)     #‘ob2‘ in dict

True

>>> dict.has_key(‘ob4‘)

False

 

也可以用循环方法来判断

for key in dict.keys():

但是不够简洁,

查看字典所有键值内容

>>> dict = {‘ob1‘:‘computer‘,‘ob2‘:‘mouse‘, ‘ob3‘:‘printer‘}

>>> dict.values()

[‘mouse‘, ‘printer‘, ‘computer‘]

 

索引一个字典
字典D中的值与相关的键k被索引表示为:D[k]。索引字典没有的键会引起意外。例如:

 
dict[‘ob1‘]                           # ‘computer‘

d[‘a‘]                           # raises exception


列出所有项目

>>> dict.items()

[(‘ob2‘, ‘mouse‘), (‘ob3‘, ‘printer‘),(‘ob1‘, ‘computer‘)]

 

清空字典

>>> dict.clear()

>>> dict

{}

 

拷贝字典

>>> dict

{‘ob2‘: ‘mouse‘, ‘ob3‘: ‘printer‘, ‘ob1‘:‘computer‘}

>>> a=dict

>>> a

{‘ob2‘: ‘mouse‘, ‘ob3‘: ‘printer‘, ‘ob1‘:‘computer‘}

>>> b=dict.copy()

>>> b

{‘ob2‘: ‘mouse‘, ‘ob3‘: ‘printer‘, ‘ob1‘: ‘computer‘}

 

比较字典

>>> cmp(a,b)

首先比较主键长度,然后比较键大小,然后比较键值大小,(第一个大返回1,小返回-1,一样返回0

 

更新字典

>>>dict={‘yangrong‘:{"age":"23","job":"IT"},"xiaohei":{"‘age‘:‘22‘,‘job‘:‘dota‘"}}

>>> dict

{‘xiaohei‘:set(["‘age‘:‘22‘,‘job‘:‘dota‘"]), ‘yangrong‘: {‘age‘: ‘23‘, ‘job‘:‘IT‘}}

 

>>> dict[‘xiaohei‘]=111        #修改一级字典

>>> dict

{‘xiaohei‘: 111, ‘yangrong‘: {‘age‘: ‘23‘,‘job‘: ‘IT‘}}

>>> dict[‘yangrong‘][‘age‘]=25    #修改二级字典

>>> dict

{‘xiaohei‘: 111, ‘yangrong‘: {‘age‘: 25,‘job‘: ‘IT‘}}

 

>>> dict={‘yangrong‘:[‘23‘,‘IT‘],"xiaohei":[‘22‘,‘dota‘]}

>>>dict[‘xiaohei‘][1]="dota2"         #修改字典中列表某项,1是代表列表中第2个字符串。

>>> dict

{‘xiaohei‘: [‘22‘, ‘dota2‘], ‘yangrong‘:[‘23‘, ‘IT‘]}  

 

 

删除字典元素

>>> dict

{‘xiaohei‘: [‘22‘, ‘dota2‘], ‘yangrong‘:[‘23‘, ‘IT‘]}

>>> del dict[‘xiaohei‘]          #删除xiaohei键值

>>> dict

{‘yangrong‘: [‘23‘, ‘IT‘]}

 

 

>>> dict

{‘yangrong‘: [‘23‘, ‘IT‘]}

>>>

>>> del dict[‘yangrong‘][1]    #删除yangrong主键的每2字值

>>> dict

{‘yangrong‘: [‘23‘]}

 

删除整个字典

>>> dict

{‘yangrong‘: [‘23‘]}

>>> dict.clear()  #del dict

>>> dict

{}

 

 

将字符串切分为列表

>>> s="hello world bye"

>>> s.split()    #用于把有规律的文本,读取出来后,使用列表进行修改,再写入文件。

[‘hello‘, ‘world‘, ‘bye‘]

 

将列表转换为字符串

S.split(str, ‘ ‘)  #stringlist,以空格切分

存储字典(pickle序列化)

#需导入pickle模块  import pickle

 

把字典内容存入文件

f=file(‘data.txt‘,‘wb‘)   #新建文件data.txt‘wb‘b是打开块文件,对于设备文件有用

pickle.dump(a,f)      #a序列化存入文件

f.close()

 

把内容读入字典(反序列化)

a=open(‘data.txt‘,‘rb‘)    #打开文件

print pickle.load(a)      #把内容全部反序列化



版权声明:本文为博主原创文章,未经博主允许不得转载。

python 字典操作

标签:python

原文地址:http://blog.csdn.net/u014082714/article/details/47058029

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