第四章 字典

字典是一种通过名字引用值的数据结构,这类数据结构称为映射。字典是python中唯一內建的映射类型。字典中的值并没有特殊的顺序,但是都存储在一个特定的键 里。键可以是数字,字符串甚至是元组。

4.2 dict函数

可以通过其他映射或者键、值这样的序列对建立字典

>>>item = [('name','Gumby',),('age',42)]
>>>d=dict(items)
>>>d
{'age':42,'name':'Gumby'}
>>>d['name']
'Gumby'

dict 函数可以通过关键字参数建立字典

d=dict(name=’Gumby’,age=42)
d
{‘age’:42,’name’:’Gumby’}

4.2.2 字典基本操作
字典的基本行为在很多方面与序列类似

len(d)返回d中项(键-值对)的数量

d[k]返回关联到键k上的值

d[k]=v将值v关联到键k上

del d[k] 删除键为k的项

k in d 检查d中是否含有键为k的项

字典与列表的区别

键类型:字典的键不一定为整数,也可能是其他不可变类型,如浮点数,字符串或者元组
自动添加:即使那个键起初不存在,也可以为他分配一个值,这样字典就会建立新的项
成员资格:k in d 查找的是键,而不是值。表达式v in l (l为列表)查找的是值,而不是索引。

第一点:键可以为任何不可变类型

>>>x=[]
>>>x[42]='foobar'

报错
程序试图将字符串‘foobar’关联到一个空列表的42号位置上,这不可能,因为这个位置改变不存在。

>>>x={}
>>>x[42] = 'foobar'
>>>x
{42:'foobar'}

将‘foobar’关联到字典的键42上

4,2,3 字典的格式化字符串

>>>phonebook
{'beth':'9102','ceil':'3258'}
>>>"ceil 's phone number is %(ceil)s."%phonebook
"ceil's phone number is 3258"

除了增加的字符串键之外,转换说明符还是一样,只要键能在字典中找到,就可以获得任意数量的转换说明符。

4,2,4 字典方法

1, clear 清除字典中所有的项,这是个原地操作


>>>d={}
>>>d['name']='gumby'
>>>d['age']=42
>>>d
{'age':42,'name':'gumby'}

>>>d.clear()
>>>d
{}

>>>x={}
>>>y=x
>>>x['key']='value'
>>>x={}
>>>y
{'key':'value'}



>>>x={}
>>>y=x
>>>x['key']='value'
>>>x.clear()
>>>y
{}

两种情况中,x ,y起初对应同一个字典。情况一中,通过将x关联到一个新的空字典来“清空”它,这对y一点影响也没有,他还关联到原来的字典。如果想清空原始字典中所有的元素,必须使用clear方法。清况二中,y随后也被清空。

2,copy 返回一个具有相同键值的新字典

>>>x ={'u':'a','m':['f','b','z']}
>>>y=x.copy()
>>>y['u'] = 'mlh'
>>>y['m'].remove('b')
>>>y
{'u':'mlh',',m':['f','z']}
>>>x
x ={'u':'a','m':['f','z']}

即在副本中替换值的时候,原始字典不受影响,修改某个值,原始字典也会改变,为避免这种情况可以使用deepcopy函数

3, fromkeys 使用给定的键建立新的字典,每个键默认对应的值为None

>>>{}.fromkeys(['name','age'])
{'age':None,'name':None}


>>>dict.fromkeys(['name','age'],'(unknown)')
{'age':'(unkonwn)','name':'(unkonwn)'}

4, get

>>>d.get('name',‘N/A’)
‘N/A’

当使用get访问一个不存在的键时,不会有异常发生,得到None值,还可以自定义默认值,替换None,若存在则返回该键值。

5, items和iteritems
items方法将所有的字典项以列表方式返回,但没有特殊顺序
iteritems的作用大致相同,但是会返回一个迭代器对象而不是列表

>>>it =d.iteritems()
>>>it
<dictionary-iterator object at 168050>
>>>list(it)     #convert the iterator to a list

6, keys 和 iterkeys
keys 将字典中的键以列表形式返回
iterkeys 返回针对键的迭代器

7, pop 获取给定键的值,然后将这个键对从字典中移除

8,popitem 弹出随机的项

9, update 利用一个字典更新另外一个字典

>>>d={'title':'python','url':'http','chnaged':'mar'}
>>>x={'title':'python'}
>>>d.update(x)
>>>d
{'title':'python','url':'http','chnaged':'mar'}

提供的字典的项会被添加到旧的字典中,若有相同则会进行覆盖

10, values 和 itervalues
values 以列表形式返回字典的值(itervalues返回值的迭代器)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值