python基础教程之字典操作详解
字典 1.键值对的集合(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)]) 3.fromkeys 不指定default_value的话,默认None 复制代码 代码如下: >>> dict.fromkeys(['name','age'],'default_value') {'age': 'default_value','name': 'default_value'} 基本操作 0.获取帮助 复制代码 代码如下: help(dict) 1.判定键是否存在于字典中 复制代码 代码如下: if k in d: #k not in dosomething() 2.读取 复制代码 代码如下: d = {'a':1,'b':2} print d['a'] #得到1,但是若键不存在,将引发异常KeyError。慎用,建议不使用 print d.get('c',3) #得到3,get方法,若是键不存在,返回第二个参数default_value.若是没有设default_value返回None 处理missing-key错误三种方式,根据具体需要 复制代码 代码如下: if k in d: print d[k] try: print d.get(k,default) 3.遍历 方式1: 复制代码 代码如下: for key in d: print key,d[key] #等价 for key in d.keys() 方式2: 复制代码 代码如下: for key,value in d.items(): print key,value 4.修改方式1:某个键值对 复制代码 代码如下: d['key'] = 'newvalue' 方式2:批量添加或更新 复制代码 代码如下: #另一个字典 d.update({'key':'newvalue'}) #这里支持一整组值 #元组列表 #**key 5.删除 复制代码 代码如下: del d['key'] value = d.pop('key') #删除并返回值 d.clear() #清空 6.其他: len(d) #长度 其他 复制代码 代码如下: keys = d.keys() keys.sort() for key in keys: print d.get(key) 按照value进行排序 复制代码 代码如下: sorted(d.items(),lambda x,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模块 复制代码 代码如下: form copy import deepcopy c = deepcopy(d) 4.一种使用场景假设有一个很大的列表l,假设10w条记录 有一个小列表b,要判断b中元素是否在l中 如果: 复制代码 代码如下: for i in b: if i in l: dosomething() 你会发现非常非常慢...因为第二个in语句,会遍历10w条…. 改进: 复制代码 代码如下: d = dict.fromkeys(l) for i in b: if i in d: dosomething() #空间换时间,O(n) -> O(1) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |