python学习笔记(4) 字典

本篇主要记录学习使用字典的笔记。

列表、元组和字符串等均是通过编号进行引用,而对于通过名字引用值的数据结构,则为映射,字典是Python里唯一内建的映射类型。

字典中的值并没有特殊的顺序,都存储在一个特定的键(Key)里,键可以是数字、字符串甚至是元组。

1 创建字典
(1)直接创建

>>> phonebook={'faith':'1852','Alice':'2341'}

每个键和它的值之间用冒号隔开,项之间用逗号隔开,整个字典由一对大括号括起来,空字典为{}

(2) dict函数

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

也可以通过关键字参数来创建字典:

>>> d=dict(name='gg',age=42)
>>> d
{'age': 42, 'name': 'gg'}
>>> 

2 字典的基本操作

>>> d=dict(name='gg',age=42)
>>> d
{'age': 42, 'name': 'gg'}
>>> len(d)
2
>>> d['age']
42
>>> d['age']='55'
>>> d
{'age': '55', 'name': 'gg'}
>>> 'age' in d
True
>>> '55' in d
False
>>> del d['age']
>>> d
{'name': 'gg'}
>>> 

3 字典的格式化字符串

%字符后面加上用圆括号括起来的键,后面再跟上其他说明元素:

>>> 'the year is %(year)s' % d
'the year is 2015'
>>> 

4 字典方法
(1) clear
清除字典中所有的项:

>>> d=dict(name='gg',age=42)
>>> d
{'age': 42, 'name': 'gg'}
>>> y=d
>>> y
{'age': 42, 'name': 'gg'}
>>> y.clear()
>>> y
{}
>>> d
{}
>>> 

注:对于字典的关联 y=d ,当删除其中一个时,另一个同时也被清除了。

(2)copy
copy方法返回一个具有相同键值对的新字典,是浅复制,当在副本中替换值时,原始字典不受影响,但是如果修改了某个值,原始字典会发生变化:

>>> x={'name':'admin','machines':['foo','bar','zoo']}
>>> y=x.copy()
>>> y['name']='mlh'
>>> y['machines'].remove('bar')
>>> y
{'name': 'mlh', 'machines': ['foo', 'zoo']}
>>> x
{'name': 'admin', 'machines': ['foo', 'zoo']}
>>> 

深复制: deepcopy

>>> from copy import deepcopy
>>> d={}
>>> d['name']=['alice','faith']
>>> c=d.copy()
>>> dc=deepcopy(d)
>>> c
{'name': ['alice', 'faith']}
>>> dc
{'name': ['alice', 'faith']}
>>> d['name'].append('MOOM')
>>> d
{'name': ['alice', 'faith', 'MOOM']}
>>> c
{'name': ['alice', 'faith', 'MOOM']}
>>> dc
{'name': ['alice', 'faith']}
>>> 

(3) fromkeys
使用给定键建立新的字典,每个键默认对应的值为None,当然也可以自定义默认值:

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

(4)get
如果键存在,跟普通的字典查询功能一样,如果键不存在,仍能访问,得到的是None或者是自定义的N/A:

>>> d['name']='Eric'
>>> d
{'name': 'Eric'}
>>> d.get('name')
'Eric'
>>> d.get('age')
>>> d.get('age','N/A')
'N/A'
>>> 

(5) items和iteritems
items方法将所有的字典项以列表的方式返回:

>>> d={'title':'Python','url':'http://www.python.org','spam':0}
>>> d
{'url': 'http://www.python.org', 'spam': 0, 'title': 'Python'}
>>> d.items()
[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python')]
>>> 

iteritems作用相同,但是返回的是一个迭代器:

>>> it=d.iteritems()
>>> it
<dictionary-itemiterator object at 0x0134D3C0>
>>> list(it)
[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python')]
>>> 

多数情况下使用iteritems更高效。

(6)keys和iterkeys
将字典中的键以列表形式返回:

>>> d.keys()
['url', 'spam', 'title']
>>> d.iterkeys()
<dictionary-keyiterator object at 0x0134D360>
>>> list(d.iterkeys())
['url', 'spam', 'title']
>>> 

(7) pop
获得对应于给定键的值,并将这个键值对从字典中移除:

>>> d
{'url': 'http://www.python.org', 'spam': 0, 'title': 'Python'}
>>> d.pop('spam')
0
>>> d
{'url': 'http://www.python.org', 'title': 'Python'}
>>> 

(8)popitem
随机删除某一键值对项:

>>> d
{'url': 'http://www.python.org', 'title': 'Python'}
>>> d.popitem()
('url', 'http://www.python.org')
>>> d
{'title': 'Python'}
>>> 

(9)update
利用一个字典项去更新另一个字典,如果有相同的键则会进行覆盖,否则添加:

>>> d
{'title': 'Python'}
>>> x={'title':'java'}
>>> d.update(x)
>>> d
{'title': 'java'}
>>>> x={'url':'www.python.org'}
>>> d.update(x)
>>> d
{'url': 'www.python.org', 'title': 'java'}
>>> 

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

>>> d
{'age2': 10, 'age1': 10}
>>> d.values()
[10, 10]
>>> 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值