python字典定义
dictionary
1.键值对的集合(map)
2.字典是以大括号“{}”包围的数据集合
3.字典是无序的,在字典中通过键来访问成员。 可变的,可嵌套,可以原处修改扩展等,不产生新的字典
4.字典的键,可以是字符串(大小写敏感),数字常量或元组(不可变类型),同一个字典的键可以混用类型。字典的键必须是可哈希的
元组作为键的条件是,元组内的值都是不可变类型
a = (1,2) #可以作为键
b = (1,2,[3,4]) #不可以
5.字典的值可以是任意类型,可以嵌套,可以自由修改
一,python字典声明
创建字典的几种方式:
1.基本
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
二,python字典 基本操作
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[k]
except KeyError:
dosomething()
print d.get(k, default)
#等价 d[k] if k in d else default
3.python字典遍历
方式1:
方式2:
4.修改方式1:某个键值对
d['key'] = 'newvalue'
方式2:批量添加或更新
#另一个字典
d.update({'key':'newvalue'}) #这里支持一整组值
#python元组列表
d.update( [ ('a',1), ('b',2) ] ) #每个元组两个元素,(key,value)
#**key
d.update(c=3, e=4)
5.删除
6.其他:
其他
1.字典排序按照key排序
sorted(d.items(), lambda x,y: cmp(x[1],y[1]))
另外:
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条….
改进: