首页 > 代码库 > python学习笔记六:字典

python学习笔记六:字典

字典是python中唯一内建的映射类型。

特点:

没有特殊的顺序;

存储在特定的键(key)下,可以是数字、字符串甚至是元组

创建和使用字典

phonebook= {‘Alice‘:‘2341‘, ‘Beth‘:‘9102‘,‘Cecil‘:‘3258‘}

a.由键-值组成,上述例子中,名字是键,电话号码是值

b.键与值用冒号(:)隔开

c.每一对键-值使用逗号(,)隔开

d.整个字典由一对大括号括起来

e.空字典:{}

dict函数

>>> items = [(‘name‘,‘Gumby‘),(‘age‘,42)]

>>> d = dict(items)

>>> d

{‘age‘: 42, ‘name‘: ‘Gumby‘}

>>>

>>> d = dict(name = ‘Gumby‘, age = 42)

>>> d

{‘age‘: 42, ‘name‘: ‘Gumby‘}

 

基本字典操作

len(d):返回字典中(键-值对)的元素数量

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

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

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

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

键类型:字典的键不一定是整形,可以是任意的不可变类型

自动添加:当键不存在时,也可以赋值,字典会建立新的项

成员资格:k in d查找的是键,而不是值

>>> people = {‘Beth‘:{‘phone‘:9102,‘addr‘:‘Bar street 42‘}}

>>> people[‘Beth‘][‘addr‘]

‘Bar street 42‘

 

字典的格式化字符串

>>> phonebook = {‘Beth‘:‘9102‘,‘Alice‘:‘2341‘,‘Cecil‘:3258}

>>> "Cecil‘s phone number is %(Cecil)s" % phonebook

"Cecil‘s phone number is 3258"

 

字典的方法

1clear: 清除字典中的所有项

>>> d = {}

>>> d[‘name‘] = ‘Gumby‘

>>> d[‘age‘] = 42

>>> d

{‘age‘: 42, ‘name‘: ‘Gumby‘}

>>> returned_value = http://www.mamicode.com/d.clear()

>>> d

{}

适用于下面的情况:yx对应同一个字典,想要清空原始字典中所有元素,必须使用clear方法

2copy:返回一个具有相同键-值对的新字典(浅复制,非复制)

>>> x = {‘username‘:‘admin‘, ‘machines‘:[‘foo‘, ‘bar‘, ‘baz‘]}

>>> y = x.copy()

>>> y[‘username‘] = ‘mlh‘

>>> y[‘machines‘].remove(‘bar‘)

>>> y

{‘username‘: ‘mlh‘, ‘machines‘: [‘foo‘, ‘baz‘]}

>>> x

{‘username‘: ‘admin‘, ‘machines‘: [‘foo‘, ‘baz‘]}

注:修改值,原字典不受影响;若原地修改值,原字典受影响。

使用深复制,可以避免上述问题。使用copy模块的deepcopy函数

>>> from copy import deepcopy

>>> d = {}

>>> d[‘names‘] = [‘Alfred‘, ‘Bertrand‘]

>>> c = d.copy()

>>> dc = deepcopy(d)

>>> d[‘names‘].append(‘clive‘)

>>> c

{‘names‘: [‘Alfred‘, ‘Bertrand‘, ‘clive‘]}

>>> dc

{‘names‘: [‘Alfred‘, ‘Bertrand‘]}

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

>>> {}.fromkeys([‘None‘, ‘age‘])

{‘None‘: None, ‘age‘: None}

4get:访问字典项,一般来说,如果试图访问字典中不存在的项时会报错,但是get不会

>>> d = {}

>>> print d.get(‘name‘)

None

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

‘N/A‘

5has_keypython 3.0中不存在此函数):检查字典中是否含有特定的键

>>> d = {}

>>> d.has_key(‘name‘)

False

6items/iteritems

items:将字典中的项以列表形式返回,列表中的每一项都表示为键-值对的形式

>>> d = {‘title‘:‘Python Web Site‘, ‘url‘:‘http://www.python.org‘, ‘spam‘:0}

>>> d.items()

[(‘url‘, ‘http://www.python.org‘), (‘spam‘, 0), (‘title‘, ‘Python Web Site‘)]

 

7)key/iterkays

key方法将字典中的键以列表形式返回,iterkeys则返回针对键的迭代器

8pop:获得对应于给定键的值,然后将这个键-值对从字典中删除

>>> d = {‘x‘:1, ‘y‘:2}

>>> d.pop(‘x‘)

1

>>> d

{‘y‘: 2}

9popitem:弹出随机项

>>> d = {‘title‘:‘Python Web Site‘, ‘url‘:‘http://www.python.org‘, ‘spam‘:0}

>>> d.popitem()

(‘url‘, ‘http://www.python.org‘)

>>> d

{‘spam‘: 0, ‘title‘: ‘Python Web Site‘}

10setdefault:当键不存在的时候,setdefault返回默认值并且相应的更新字典

>>> d = {}

>>> d.setdefault(‘name‘, ‘N/A‘)

‘N/A‘

>>> d[‘name‘] = ‘Gumby‘

>>> d.setdefault(‘name‘, ‘N/A‘)

‘Gumby‘

>>> d

{‘name‘: ‘Gumby‘}

11update:利用一个字典更新另一个字典

>>> d = {‘title‘:‘Python Web Site‘, ‘url‘:‘http://www.python.org‘, ‘changed‘:‘Apr 19 17:15:20 2017‘}

>>> x = {‘title‘:‘Python Language Websites‘}

>>> d.update(x)

>>> d

{‘url‘: ‘http://www.python.org‘, ‘changed‘: ‘Apr 19 17:15:20 2017‘, ‘title‘: ‘Python Language Websites‘}

12values/itervalues

values方法以列表的形式返回字典中的值

>>> d = {}

>>> d[1] = 1

>>> d[2] = 2

>>> d[3] = 3

>>> d[4] = 1

>>> d.values()

[1, 2, 3, 1]


python学习笔记六:字典