标题 | python基础教程之字典操作详解 |
内容 | 这篇文章主要介绍了python中的字典操作详解,需要的朋友可以参考下。 字典 dictionary1.键值对的集合(map)2.字典是以大括号“{}”包围的数据集合3.字典是无序的,在字典中通过键来访问成员。可变的,可嵌套,可以原处修改扩展等,不产生新的字典4.字典的键,可以是字符串(大小写敏感),数字常量或元组(不可变类型),同一个字典的键可以混用类型。字典的键必须是可哈希的元组作为键的条件是,元组内的值都是不可变类型 代码如下: a=(1,2)#可以作为键 b=(1,2,[3,4])#不可以 5.字典的值可以是任意类型,可以嵌套,可以自由修改声明 创建字典的几种方式:1.基本 代码如下: d={}#空字典 d={'name':'tom','age':22} #等价 d={} d['name']='tom' d['age']=22 2.dict 代码如下: d=dict()#空 d=dict(name='tom',age=22)d=dict([('name','tom'),('age',22)]) #等价 keys=['name','age'] values=['tom',22] d=dict(zip(keys,values))3.fromkeys不指定default_value的话,默认None 代码如下: >>>dict.fromkeys(['name','age'],'default_value') {'age':'default_value','name':'default_value'} 基本操作0.获取帮助 代码如下: help(dict)1.判定键是否存在于字典中 代码如下: ifkind:#knotin dosomething() 2.读取 代码如下: d={'a':1,'b':2} printd['a']#得到1,但是若键不存在,将引发异常KeyError。慎用,建议不使用printd.get('c',3)#得到3,get方法,若是键不存在,返回第二个参数default_value.若是没有设default_value返回None 处理missing-key错误三种方式,根据具体需要 代码如下: ifkind: printd[k]try: printd[k] exceptKeyError: dosomething()printd.get(k,default) #等价d[k]ifkindelsedefault3.遍历方式1: 代码如下: forkeyind: printkey,d[key] #等价forkeyind.keys() 方式2: 代码如下: forkey,valueind.items(): printkey,value 4.修改方式1:某个键值对 代码如下: d['key']='newvalue' 方式2:批量添加或更新 代码如下: #另一个字典 d.update({'key':'newvalue'})#这里支持一整组值#元组列表 d.update([('a',1),('b',2)])#每个元组两个元素,(key,value)#**key d.update(c=3,e=4)5.删除 代码如下: deld['key'] value=d.pop('key')#删除并返回值 d.clear()#清空 6.其他:len(d)#长度 d.keys()#key列表 d.values()#value列表 d.items()#(key,value)列表 c=d.copy()#浅拷贝 #返回迭代器,节省内存 d.iterkeys() d.itervalues() d.iteritems() d.setdefault('name','ken')#若原来没有,设置,否则原值不变其他 1.字典排序按照key排序 代码如下: keys=d.keys() keys.sort() forkeyinkeys: printd.get(key) 按照value进行排序 代码如下: sorted(d.items(),lambdax,y:cmp(x[1],y[1]))另外: 代码如下: #假设d为字典 sorted(d)#返回同sorted(d.keys()),返回的是key排序 2.自定义对象作为key必须: 代码如下: def__hash__(self): pass def__eq__(self,other): pass 3.字典拷贝浅拷贝: 代码如下: c=d.copy()#深拷贝必须用copy模块 代码如下: formcopyimportdeepcopy c=deepcopy(d) 4.一种使用场景假设有一个很大的列表l,假设10w条记录有一个小列表b,要判断b中元素是否在l中如果: 代码如下: foriinb: ifiinl: dosomething() 你会发现非常非常慢...因为第二个in语句,会遍历10w条….改进: 代码如下: d=dict.fromkeys(l) foriinb: ifiind: dosomething() #空间换时间,O(n)->O(1) |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。