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"

字典的方法

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

>>>
d = {}

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

>>>
d[‘age‘] = 42

>>>
d

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

>>>
returned_value = d.clear()

>>>
d

{}

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

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

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

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

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

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

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

>>>
d = {}

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

None

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

‘N/A‘

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

>>>
d = {}

>>>
d.has_key(‘name‘)

False

6)items/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则返回针对键的迭代器

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

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

>>>
d.pop(‘x‘)

1

>>>
d

{‘y‘:
2}

9)popitem:弹出随机项

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

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

>>>
d = {}

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

‘N/A‘

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

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

‘Gumby‘

>>>
d

{‘name‘:
‘Gumby‘}

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

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

12)values/itervalues

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

>>>
d = {}

>>>
d[1] = 1

>>>
d[2] = 2

>>>
d[3] = 3

>>>
d[4] = 1

>>>
d.values()

[1,
2, 3, 1]

时间: 2024-10-13 22:02:46

python学习笔记六:字典的相关文章

python 学习笔记 三 字典

字典 Python的高效的key/value哈希表结构叫做"dict", dict的内容可以写成一系列的key:value对并放入{ }中, 相当于: dict = {key1:value1, key2:value2, ...}, 一个空的字典就是俩个大括号{ }. 下面是从一个空字典创建字典以及一些关键点: 数字, 字符串和元组可以作为字典的key, value可以是任何类型(包括字典). ## Can build up a dict by starting with the the

Python学习笔记六:列表、元组、字典

学习其他语言很少关注数组是的结构是怎么回事,都是直接使用.Python定义了列表.元组.字典三种数据结构,是我们使用python的基础,因此有必要理解它们的含义,我想这个和python一切皆对象的思想有关.python的数据结构更加灵活. 1. 列表[lists] 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片,加

python学习笔记(六):常用模块

一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py文件,包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果你想导入其他目录下的模块,那么这个目录必须是一个包才可以导入. 导入模块 1 2 3 4 5 import module #导入模块 from modul

Python学习笔记六(常用模块、面向对象基础)

一.random模块 import random print(random.random()) #0-1之间的小数 print(random.randint(1,5)) #1-5之间(包括1和5)的整数 print(random.randrange(1,5)) #1-5之间(包含1,不好包含5)的整数 print(random.choice(['a','b','c'])) #给定列表中任意元素 print(random.sample(['a','b','c','d'],2)) #给定列表中任意n

python 学习笔记day05-python字典和集合、条件和循环、文件和输入输出

字典和集合 字典基础操作 创建字典 通过{}操作符创建字典 通过dict()工厂函数创建字典 通过fromkeys()创建具有相同值的默认字典 >>> aDict = {'Name':'Bob','age':23}                >>> import tab                >>> bDict = dict((['name','bob'],['age',23]))                >>> p

Python学习笔记四--字典与集合

字典是Python中唯一的映射类型.所谓映射即指该数据类型包含哈希值(key)和与之对应的值(value)的序列.字典是可变类型.字典中的数据是无序排列的. 4.1.1字典的创建及赋值 dict1={} dict2={'name':John,'age':24} 使用dict()函数创建字典. dict()函数接受序列,或关键字参数作为参数创建字典.若不提供参数则创建空字典. dict1=dict([['x',1],['y',2]])#接受list作为参数创建字典 dict2=dict(x=1.y

【Python学习笔记】字典操作

字典dict是Python中唯一内置的映射类型,由键值对组成,字典是无序的.字典的键必须是不变对象,如字符串.数字.元组等,而包含可变对象的列表.字典和元组则不能作为键.这里可变和不可变的意思是指这个可以对象可以被哈希,内置函数hash()可以用来测试对象是否可被哈希.字典的值可以为任何对象.下文中用k来表示键,用v来表示值,字典的形式为d = {k1:v1, k2:v2,..., kn:vn} 字典的创建 1. 使用{ }创建 student = {"name": "Jac

python学习笔记(字典)

字典的使用 现实中的字段及在python中的字段都进行了构建,从而可以轻松查到某个特定的词语(键),从而找到它的意义(值). 某些情况下,字典比列表更加适用: # 表征游戏棋盘的状态,每个键都是由坐标值组成的元组: # 存储文件修改次数,用文件名作为键: # 数字电话/地址本 创建一个人名列表,以及四位的分机号码: >>> names=['Alice','Beth','Ceci','Dee-Dee','Earl']>>> numbers=['2341','9102','

Python学习笔记_字典(Dict)_遍历_不同方法_性能测试对比

今天专门把python的字典各种方法对比测试了一下性能效果. 测试代码如下: 1 def dict_traverse(): 2 from time import clock 3 my_dict = {'name': 'Jim', 'age': '20', 'height': '180cm', 'weight': '60kg'} 4 5 t_start = clock() 6 for key in my_dict: # 性能最差写法.无优化 7 print 'Type01.01: %s --- %