第4章 Python笔记 字典

本文详细介绍了Python中字典的基本概念、创建方法、常用操作及多种内置方法,包括字典的格式化字符串、键值对的获取与更新等,适合初学者快速掌握字典的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建和使用字典

字典由多个建及与其对应的值构成键—值(也称项)对组成。每个键和它的值之间用(:)隔开,项之间用逗号(,)隔开,而整个字典由一对大括号括起来。字典中的键是唯一的,而值并不唯一。

>>> phonebook={'Alice':'2341','Beth':'9102','Cecil':'3258'}
1、dict函数
dict函数可以通过其他映射或者(键,值)对的序列建立字典。

>>> items=[('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'}
2、基本字典操作

d表示字典

(1)len(d)返回d中项(键—值对)的数量;

(2)d[k]返回关联到键k的值;

(3)d[k]=v将值v关联到键k上;

(4)del d[k]删除键为k的项;

(5)k in d 检查d中是否有含有键为k的项。
字典与列表的不同之处:

(1)键类型:字典的键不一定是整形数据(但也可以是),键可以是任意的不可变类型,如浮点型(实型)、字符串或者元组。

(2)自动添加:即使键起初在字典中并不存在,也可以为它赋值,这样字典就会建立新的项。

(3)成员资格:表达式k in d 查找的是键,而不是值。对于列表来说查找的就是值。
3、字典的格式化字符串

字典的格式化字符串是在每个转换说明符中的%字符后面,可以加上键(用圆括号括起来),后面再跟上其他说明元素。

>>> phonebook={'Beth':'9102','Alice':'2341','Cecil':'3258'}
>>> phonebook
{'Beth': '9102', 'Alice': '2341', 'Cecil': '3258'}
>>> "Cecil's phone number is %(Cecil)s."%phonebook
"Cecil's phone number is 3258."
4、字典的方法

4.1 clear方法清除字典中的所有项。该方法是原地操作,无返回值。

>>> x={}
>>> y=x
>>> x['key']='value'
>>> y
{'key': 'value'}
>>> x={}
>>> y
{'key': 'value'}
>>> x={}
>>> y=x
x
>>> x['key']='value'
>>> y
{'key': 'value'}
>>> x.clear()
>>> y
{}
4.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']}
4.3 fromkeys方法使用给定的键建立新的字典,每个键默认对应的值为None。

>>> {}.fromkeys(['name','age'])
{'age': None, 'name': None}
也可直接在所有字典的类型dict上面调用方法

>>> dict.fromkeys(['name','age'])
{'age': None, 'name': None}
也可以自己提供默认值

>>> dict.fromkeys(['name','age'],'(unknown)')
{'age': '(unknown)', 'name': '(unknown)'}
4.4 get用来访问字典中的项,如果访问的项不存在不会报错,只会返回None。

>>> d={}
>>> print d['name']

Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    print d['name']
KeyError: 'name'
>>> print d.get('name')
None
也可以更改默认值:

>>> d.get('name','N/A')
'N/A'
进行正常访问:

>>> d['name']='Eric'
>>> d.get('name')
'Eric'
4.5 has_key方法用来检查字典中是否包含给出的键,相当于表达式k in d。在Python 3.0 中不包括该函数。

>>> d={}
>>> d.has_key('name')
False
>>> d['name']='Eric'
>>> d.has_key('name')
True
4.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')]
iteritems返回一个迭代器而不是列表:

>>> it=d.iteritems()
>>> it
<dictionary-itemiterator object at 0x0206E5A0>
>>> list(it)
[('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')]
4.7 keys和iterkeys

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

4.8 pop方法用来获得对应给定键的值,然后将这个键—值从字典中移除。

>>> d={'x':1,'y':2}
>>> d.pop('x')
1
>>> d
{'y': 2}
4.9 popitem方法类似于list.pop,后者会弹出列表的最后一个元素。但是字典没有顺序的概念,是无序的。所以popitem弹出的是随机项,所以字典中没有与append等价的方法。

>>> d={'url':'http;//www.python.org','spam':0,'title':'Python Web Site'}
>>> d
{'url': 'http;//www.python.org', 'title': 'Python Web Site', 'spam': 0}
>>> d.popitem()
('url', 'http;//www.python.org')
>>> d
{'title': 'Python Web Site', 'spam': 0}
4.10 setdefault方法不仅可以获得与给定键相关联的值,还能在字典在不含给定键的情况下设定相应的键值。

>>> d={}
>>> d.setdefault('name','N/A')
'N/A'
>>> d
{'name': 'N/A'}
>>> d['name']='Gumby'
>>> d.setdefault('name','N/A')
'Gumby'
>>> d
{'name': 'Gumby'}
从上面程序可以看出,setdefault返回默认值并且相应的更新字典。如果键存在,那么就返回与其对应的值,但不改变字典。
4.11 update方法可以利用一个字典项更新另外一个字典:

>>> d={'title':'Python Web Site','url':'http://www.python.org','changed':'Mar 14 22:09:15 MET 2008'}
>>> x={'title':'Python Language Website'}
>>> d.update(x)
>>> d
{'url': 'http://www.python.org', 'changed': 'Mar 14 22:09:15 MET 2008', 'title': 'Python Language Website'}
提供的字典的项会被添加到旧的字典中,若有相同的键则会进行覆盖。
4.12 values和itervalues

values方法以列表的形式返回字典中的值(itervalues返回值的迭代器)。与返回列表不同的是,返回值的列表中可以包含重复的元素:

>>> d={}
>>> d[1]=1
>>> d[2]=2
>>> d[3]=3
>>> d[4]=1
>>> d
{1: 1, 2: 2, 3: 3, 4: 1}
>>> d.values()
[1, 2, 3, 1]




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值