Python基础教程学习第四日:字典

字典

通过轻松查找某个特定的词语(键),从而找到它的定义(值)。键可以是数字、字符串甚至是元组。

创建和使用字典

键-值对成为项,字典由多个项组成,每个键和它的值之间用冒号(:)隔开,项之间用逗号(,)隔开,整个字典用一个大括号括起来。
- dict函数:通过其他映射(比如其他字典)或者(键、值)对的序列建立字典。

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

基本字典操作

  • len(d)返回d中项(键-值对)的数量。
  • d[k]返回关联到键k上的值。
  • d[k]=v将值v关联到键k上。
  • del d[k]删除键k的项。
  • k in d检查字典d中是否含有键为k的项。

键类型,可以是任意不可变类型,如字符串、元组、浮点型(实型)等。

字典的格式化字符串

>>> phonebook = {'Beth':'9102', 'Alice':'2341', 'Cecil':'3258'}
>>> "Cecil's phone number is %(Cecil)s." % phonebook
"Cecil's phone number is 3258."

字典方法

  • clear:清除字典中所有的项,无返回值(返回None)。
>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> y
{'key': 'value'}
>>> x = {}
>>> y
{'key': 'value'}
>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> y
{'key': 'value'}
>>> x.clear()
>>> x
{}
>>> y
{}
  • copy:返回一直具有相同键-值对的新字典(浅复制)。在副本中替换值,原始字典不受影响,如果修改了某个值(是修改,而不是替换,个人理解:使用列表方法进行修改),原始字典也会发生改变。
>>> x = {'name':'admin', 'machines':['foo', 'bar', 'baz']}
>>> y = x.copy()
>>> x.clear()
>>> x
{}
>>> y
{'name':'admin', 'machines':['foo', 'bar', 'baz']}
>>> x = y.copy()
>>> y['name'] = 'mlh'
>>> x
{'name': 'admin', 'machines': ['foo', 'bar', 'baz']}
>>> y
{'name': 'mlh', 'machines': ['foo', 'bar', 'baz']}
>>> y['machines'].remove('bar')
>>> x
{'name': 'admin', 'machines': ['foo', 'baz']}
>>> y
{'name': 'mlh', 'machines': ['foo', 'baz']}
>>> x.clear()
>>> y
{'name': 'mlh', 'machines': ['foo', 'baz']}
  • 使用深复制(deepcopy)可以解决这个问题,深复制后的字典不受原字典的影响。
>>> from copy import deepcopy
>>> d = {}
>>> d['name'] = ['Alfred', 'Bertrand']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d['name'].append('Clive')
>>> c
{'name': ['Alfred', 'Bertrand', 'Clive']}
>>> dc
{'name': ['Alfred', 'Bertrand']}
  • fromkeys:创建新的字典,每个键对应一个默认的值None,或者自己提供默认值。
>>> {}.fromkeys(['name','age'])
{'age': None, 'name': None}
>>> dict.fromkeys(['name','age'],'unknown')
{'age': 'unknown', 'name': 'unknown'}
  • get:当get访问一个不存在的键时,得到一个默认的值None,或者自己在函数中定义,而如果键存在时,就和普通的字典查询一样。
>>> d = {'name': 'Jack'}
>>> d.get('name')
'Jack'
>>> d.get('addrs', 'Not found')
'Not found'
  • has_key:检查字典中是否含有特定的键,返回布尔型。
  • items和iteritems:items将字典所有的项以列表的方式返回。itertiems返回一个迭代器对象。
  • keys和iterkeys:keys将字典中的键以列表形式返回,而iterkeys则返回针对键的迭代器。
  • pop:获取对应于给定键的值,并将这个键-值对从字典中移除。
  • popitem:类似于列表中的pop,但是是随机弹出项,因为没有先后的概念。
  • setdefault:功能和get类似,同时当键不存在时,返回默认值,并且更新原字典(即创建一个新键,对应于默认值)。
  • update:可以利用一个字典项更新另外一个字典。提供的字典中的项会被添加到旧的字典中,若有相同的键则会进行覆盖。
  • values和itervalues:分别以列表和迭代器对象的形式返回字典中的值。
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值