python字典操作
来源:互联网 发布:mac数位板驱动怎么安装 编辑:程序博客网 时间:2024/06/11 20:21
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}
结果:
特点:
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, ' ') #将string转list,以空格切分
存储字典(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的字典操作
- python 字典操作备忘
- python 字典操作
- python字典操作
- python中字典操作
- python的{}字典操作
- Python的字典操作
- Python的字典操作
- python 字典操作
- Python的字典操作
- Python的字典操作
- python之字典操作
- Python的字典操作
- Python字典操作
- python 字典/集合操作
- python 字典操作
- Python的字典操作
- Cocos2dx杂记:如何显示中文(2)
- springmvc的常见注解
- MDR外接设备的接线方式
- VS2013 opencv 视频读取灰屏
- js相关插件小应用以及css属性拓展
- python字典操作
- 上传去取文件名称
- selenium元素定位方法
- 技巧:删除桌面上提示找不到该项目的文件
- kendu 的下拉复选+linq 的复杂查询+一句话二次筛选+前端使用
- C# WinForm程序启动时不显示主窗体的实现方法
- 【模板】树状数组 单点修改,区间求和 (模板题:洛谷P3374树状数组1)
- 强制Google.com.hk域名使用https
- 在Servlet中使用JDBC访问数据库