第三篇 映射类型

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]}

当替换副本中的值时,原件不受影响。 然而,如果修改副本中的引用值,则原数据也受到影响,这种称为“浅拷贝”;

可以使用深复制
from copy import  deepcopy
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])









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值