字典在Python中的地位排在第一,非常非常重要;Python中许多数据结构、计算机编程 都是基于字典;
1.字典dict
哈希表的算法是获取键 key ( set 相当于key键 ),对键执行一个叫做哈希函数的操作,并根据计算的结果,选择在数据结构的某个地址中来存储你的值。
字典是Python中一个键值映射的数据结构;
字典是非线性结构中最重要的一种;set 可以看成字典的特例:set都是key;
2. 创建字典(可变的,无序的,key不重复的)
# 创建字典 (多种方法)
# 第一种方法
dict1 = {'name':'linda','age':13}
# 第二种方法:利用二元结构
dict2 = dict(['name','linda'],['age',13])
d=dict(([1,'a'],[2,'b'])) # 列表形式
e=dict(a=1,b=2,c=3,d='str') # =对应关系;
#第三种方法,将一个可迭代对象的值作为字典的每一个键,赋值为1
dict3 = {}.fromkeys(('x','y','z'),1)
dict2 = {}.fromkeys(('x','y','z'))
# 第四种方法:使用字典构建另一个字典;
dict(mapping,**kwary)
总结:
1. dict(iterable,**kwarg)必须是一个二元结构(键值对结构) ;
d={'a':1,'b':2}
d=dict(([1,'a'],[2,'b']))
e=dict(a=1,b=2,c=3,d='str')
e=dict.fromkeys(range(5),100) # 取值都是一样;
e
----------------------------------------------
{0: 100, 1: 100, 2: 100, 3: 100, 4: 100}
3.访问字典
key:可以hash就可以作为key; 数字、字符串都可以;
# 返回一个键的列表
dict1.keys() | ['name','age']
# 返回一个值的列表
dict1.values() | ['linda',13]
# 返回一个包含(键,值)元组的列表
dict1.items() | [('name','linda'),('age':13)]
# 返回键name对应的值
dict1['name'] | 'linda'
# 得到键的值,若键不存在,则返回默认值
dict1.get('name',None) | 'linda'
# 字典中没有sex,返回默认值man
dict1.get('sex','man') | 'man'
dict.iter() #方法 iteritems(), iterkeys(), itervalues()与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表。
d.setdefault('b', 1000) #设置缺省值;
4.字典 增、删、改
# 修改键name的值
dict1['name'] = 'lihua'
# 如果字典中 key 键存在,删除并返回 dict[key],如果 key 键不存在,且没有给出 default 的值,引发KeyError 异常
dict1.pop(name,'unknown') | 'linda'
# 删除键name这条记录
dict1.remove('name')
# 如果字典中不存在 key 键,由 dict[key]=default 为它赋值,若存在则不改变它的值
dict1.setdefault('name',default='unknown')
# 将字典 dict2 的键-值对添加到字典 dict
dict.update(dict2)
d = dict.fromkeys(range(10),0)
d.update([(1,2000)]) # d.update([(1,2000)])
d
-----------------------------------------------------------
{0: 0, 1: 2000, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0}
d.update({'b':3000, 'c':7879})
d
------------------------------------------------------------------
{0: 0,
1: 2000,
2: 0,
3: 0,
4: 0,
5: 0,
6: 0,
7: 0,
8: 0,
9: 0,
'b': 3000,
'c': 7879}
# 删除字典中所有元素
dict.clear()
# 删除字典
del dict1
网友评论