1 映射类型中的字典
python中通过名称访问各个值的数据结构称为映射;字典是python唯一的内置映射类型(key-value),
其中key可以是数字、字符串或元组。
1.1 字典的定义
#创建字典
data={'a11':1,'a22':2,'a22':3}
#使用dict创建字典
xval=[('xname','John'),('xage',38)]
xdata=dict(xval)
print(xdata)
结果
{'xname': 'John', 'xage': 38}
键-值对称为项
1.2 字典的基本操作
1) len(dict) 返回字典包含的项数
2) dict[key] 返回key管理的值
3) dict[key]=value按key修改值
4) del dict[key] 删除键为key 的项
5) kword in dict 检查字典中是否包含kword
1.3 字典不同与列表特点
1) 键的类型
字典中的键可以是任何不可变的类型,如数值(整数、浮点)、字符串或元组
2) 自动添加
可以直接为字典添加key-value项,列表中只能使用append或类似方法
3) 成员资格
字典中kword in dict判断字典中key是否包含该kword,而列表中 val in list查找的是否包含val值;
1.4 将字符串格式设置功能用于字典
#定义字典
xdata={'xtitle':'人民日报','xprice':5.64}
#使用format_map为格式化字符串赋值
sStr="我看的是{xtitle},每份报纸卖{xprice}".format_map(xdata)
print(sStr)
2 字典方法
1) clear()
删除所有字典项
2) copy()
x=[1,2,3]
y={'xname':x}
z=y.copy();
z['xname'].remove(3);
print(z)
print(y)
结果
{'xname': [1, 2]}
{'xname': [1, 2]}
当替换副本中的值时,原件不受影响。 然而,如果修改副本中的引用值,则原数据也受到影响,这种称为“浅拷贝”;
x=[1,2,3]
y={'xname':x}
z=y.copy();
z2=deepcopy(y)
#z['xname'].remove(3);
z2['xname'].remove(3)
print(z2)
print(y)
结果:
{'xname': [1, 2]}
{'xname': [1, 2, 3]}
3) fromkey
x={'xname':'ABC'}
y=x.fromkeys(('xage','xaddr'),'ok')
print(y)
4)get
通过key获取字典中对应的值,如果查询不到不会报错,还可以提供默认值
5) items
获取字典视图(包含字典项)的列表
xdata={'aa':10,'bb':11,'cc':12}
xitem=xdata.items();
print(xitem)
结果
dict_items([('aa', 10), ('bb', 11), ('cc', 12)])
6) keys
返回字典视图,包含所有的key
xdata={'aa':10,'bb':11,'cc':12}
xkey=xdata.keys()
print(xkey)
结果
dict_keys(['aa', 'bb', 'cc'])
7) pop
用于获取与指定键相关联的值,并将该键-值对从字典中删除
例
mdic={}
mdic['kname']='刘备'
mdic['kage']=28
mdic['kwife']='甘夫人'
mdic['kfriends']=['关羽','张飞','赵云']
print(mdic)
# del mdic['kwife']
# print(mdic)
#pop删除
kv=mdic.pop('kfriends')
print(kv)
print(mdic)
8) popitem
弹出最后一个字典项,并以元组形式返回key-value对
xdata={'aa':10,'bb':11,'cc':12,'c2':13}
x=xdata.popitem()
print(x)
print(xdata)
结果
('c2', 13)
{'aa': 10, 'bb': 11, 'cc': 12}
9) setdefault
获取已有key或如果key不存在则进行添加
setdefault('key','default-value')
10) update
使用一个字典更新或添加源字典
xdata={'a':1,'b':2,'c':5}
xnew={'c':3}
xdata.update(xnew)
print(xdata)
结果?
11) values
返回字典中values部分
xdata={'a':1,'b':2,'c':5}
c=xdata.values()
print(c)
结果
dict_values([1, 2, 5])