百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Python入门系列21-Python内置数据结构之字典操作

liuian 2024-11-28 00:43 55 浏览

在Python编程中使用字典必然需要对它进行各种操作,比如取值、删除某个键值对、增加某个键值对、循环、判断键存在等等,而这些操作都可以通过字典自带的方法来轻松的完成。

我们先来查看字典自带有哪些方法。

>>> dir({})
['__class__',
 '__contains__',
 '__delattr__',
 '__delitem__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getitem__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__iter__',
 '__le__',
 '__len__',
 '__lt__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__setitem__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 'clear',
 'copy',
 'fromkeys',
 'get',
 'items',
 'keys',
 'pop',
 'popitem',
 'setdefault',
 'update',
 'values']

没错,上面我使用两个大括号来声明一个字典,并没有预先去声明一个有键值对的字典。

我们同样忽略以双下划线开头的方法和属性,实际上我们以后几乎都是跟这些方法打交道的。

1、values、keys和items方法

这三个方法很像,values方法会返回字典的所有值,而keys方法会返回字典的所有键,items方法则返回由键和值组成的元组为元素的数据结构,这对我们需要收集字典的值、键或者键值对的时候是很有帮助的。

>>> help({}.values)  # 查看字典values方法的帮助文档
Help on built-in function values:
values(...) method of builtins.dict instance
    D.values() -> an object providing a view on D's values
>>>
>>> help({}.keys) # 查看字典keys方法的帮助文档
Help on built-in function keys:
keys(...) method of builtins.dict instance
    D.keys() -> a set-like object providing a view on D's keys
>>>
>>> help({}.items)
Help on built-in function items:
items(...) method of builtins.dict instance
    D.items() -> a set-like object providing a view on D's items
>>>
>>> url = {
'baidu': 'http://www.baidu.com',
'google': 'http://www.google.com',
'douban': 'http://www.douban.com',
'python': 'http://www.python.org',
}
>>> url
{
'baidu': 'http://www.baidu.com',
'google': 'http://www.google.com',
'douban': 'http://www.douban.com',
'python': 'http://www.python.org',
}
>>> url.values()  #在Python3中,values方法返回一个dict_values,在Python2中会返回一个包含字典值的列表
dict_values(['http://www.baidu.com', 'http://www.google.com', 'http://www.douban.com', 'http://www.python.org'])
>>> list(url.values()) #我们可以利用内置函数list把dict_values转换成列表
['http://www.baidu.com', 'http://www.google.com', 'http://www.douban.com', 'http://www.python.org']
>>>
>>> url.keys()
dict_keys(['baidu', 'google', 'douban', 'python'])
>>> list(url.keys())
['baidu', 'google', 'douban', 'python']
>>>
>>> url.items()
 dict_items([('baidu', 'http://www.baidu.com'), ('google', 'http://www.google.com'), ('douban', 'http://www.douban.com'), ('python', 'http://www.python.org')])
>>> list(url.items())
[('baidu', 'http://www.baidu.com'),
 ('google', 'http://www.google.com'),
 ('douban', 'http://www.douban.com'),
 ('python', 'http://www.python.org')]

2、pop和popitem方法

这两个方法有点似曾相识,没错,在列表操作那一章中也讲到这个方法,方法的作用都差不多,都是把数据结构中的元素给剔除掉,但这两个方法的用法有差别。

>>> help({}.pop)
Help on built-in function pop:
pop(...) method of builtins.dict instance
    D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
    If key is not found, d is returned if given, otherwise KeyError is raised
>>>
>>> help({}.popitem)
Help on built-in function popitem:
popitem(...) method of builtins.dict instance
    D.popitem() -> (k, v), remove and return some (key, value) pair as a
    2-tuple; but raise KeyError if D is empty.

从上面这两个方法的帮助文档可以知道:

pop方法可以接收两个参数,一个必须提供,一个是可选的。必须提供的是字典的键,如果字典存在该键,则会剔除对应的值并返回。如果提供的键在字典中不存在,则会报错,除非同时提供一个可选的参数,则会返回该可选参数。

popitem方法则不接收任何参数,它会随机返回一个由键和值组成的元组,如果空字典使用该方法则会产生一个KeyError错误。

>>> url = {
'baidu': 'http://www.baidu.com',
'google': 'http://www.google.com',
'douban': 'http://www.douban.com',
'python': 'http://www.python.org',
}
>>> url
{
'baidu': 'http://www.baidu.com',
'google': 'http://www.google.com',
'douban': 'http://www.douban.com',
'python': 'http://www.python.org',
}
>>> url.pop('baidu')  # 剔除键'baidu'对应的值
'http://www.baidu.com'
>>> url
{
'google': 'http://www.google.com',
'douban': 'http://www.douban.com',
'python': 'http://www.python.org',
}
>>> url.pop('sina') # 剔除一个不存在的键,并且不提供可选参数
Traceback (most recent call last):
  File "D:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-136-2406404084fd>", line 1, in <module>
    url.pop('sina')
KeyError: 'sina'
>>> url.pop('sina', 'None') # 剔除一个不存在的键,并且提供可选参数
'None'
>>>
>>> url.popitem()
('google', 'http://www.google.com')
>>> {}.popitem()  #空字典执行popitem方法,会产生错误
Traceback (most recent call last):
  File "D:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-138-660ae4b74927>", line 1, in <module>
    {}.popitem()
KeyError: 'popitem(): dictionary is empty'

3、get方法

字典get方法用于获取对应键的值,它中括号法一样,可以获取字典的值,但是它两对待键不存在的情况时表现又不一样。

利用中括号法获取字典某个值的时候,如果字典中不存在该键,则会删除错误。而利用get方法不会报错,这也是推荐大家使用get方法获取值的原因。

get方法可以接收两个参数,一个是必须提供,一个是可选的。键是必须提供的参数,如果字典存在该键,则返回对应的值。如果字典不存在该键,则会返回一个None数据类型,除非提供可选参数来让找不到键的情况下返回可选参数。

>>> help({}.get)
Help on built-in function get:
get(...) method of builtins.dict instance
    D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.
>>>
>>>  url = {
'baidu': 'http://www.baidu.com',
'google': 'http://www.google.com',
'douban': 'http://www.douban.com',
'python': 'http://www.python.org',
}
>>> url
{
'baidu': 'http://www.baidu.com',
'google': 'http://www.google.com',
'douban': 'http://www.douban.com',
'python': 'http://www.python.org',
}
>>> url.get('baidu')  # 返回键'baidu'对应的值
'http://www.baidu.com'
>>> print(url.get('zhihu')  #试图获取一个不存在的键,不提供可选参数的情况下返回None
 None
>>> url.get('zhihu', 'http://www.zhihu.com')  # 返回可选参数
 'http://www.zhihu.com'
>>>
>>> url['baidu']
 'http://www.baidu.com'
>>> url['zhihu']  # 没得商量,会产生一个KeyError错误
Traceback (most recent call last):
  File "D:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-161-7d75b393b9db>", line 1, in <module>
    url['zhihu']
KeyError: 'zhihu'

4、update方法

要扩展现有字典经常碰到,也叫作更新字典,该方法可以提供多种类型的参数,比如字典、有特殊要求的列表或者元组。

>>> help({}.update)
Help on built-in function update:
update(...) method of builtins.dict instance
    D.update([E, ]**F) -> None.  Update D from dict/iterable E and F.
    If E is present and has a .keys() method, then does:  for k in E: D[k] = E[k]
    If E is present and lacks a .keys() method, then does:  for k, v in E: D[k] = v
    In either case, this is followed by: for k in F:  D[k] = F[k]
>>>
>>> url = {
'baidu': 'http://www.baidu.com',
'google': 'http://www.google.com',
'douban': 'http://www.douban.com',
'python': 'http://www.python.org',
}
>>> url
{
'baidu': 'http://www.baidu.com',
'google': 'http://www.google.com',
'douban': 'http://www.douban.com',
'python': 'http://www.python.org',
}
>>> new_dict = {'zhihu': 'http://www.zhihu.com'} #定义一个新的字典
>>> url.update(new_dict)
>>> url
{'baidu': 'http://www.baidu.com',
 'google': 'http://www.google.com',
 'douban': 'http://www.douban.com',
 'python': 'http://www.python.org',
 'zhihu': 'http://www.zhihu.com'}
>>>
>>> url.update([('name', 'python'),( 'age',28)])
{'baidu': 'http://www.baidu.com',
 'google': 'http://www.google.com',
 'douban': 'http://www.douban.com',
 'python': 'http://www.python.org',
 'zhihu': 'http://www.zhihu.com',
 'name': 'python',
 'age': 28}

5、setdefaut方法

setdefautl方法可以说是get方法的升级版,该方法同样也可以接收两个参数,一个必须提供,就是字典的键。另一个是可选的,在有些时候这个可选参数作用很大。

1、如果两个参数同时提供,当字典中存在该键时,则返回键对应的值。如果字典中不存在该键,则该字典会利用键参数为新键,可选参数为值作为新元素添加的字典中,并且返回可选参数。

2、如果只提供键参数,如果字典中存在该键,则返回对应值。如果不存在,则返回None

>>> help({}.setdefault)
Help on method_descriptor:
setdefault(...)
    D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
>>> d = {}
>>> d.setdefault('name') #空字典不存在该键,返回None

>>> d.setdefault('name', 'Python')
'

6、删除字典键值对及字典

除了可以使用pop和popitem方法来删除字典键值对外,我们可以使用del来删除。

>>>  url = {
'baidu': 'http://www.baidu.com',
'google': 'http://www.google.com',
'douban': 'http://www.douban.com',
'python': 'http://www.python.org',
}
>>> url
{
'baidu': 'http://www.baidu.com',
'google': 'http://www.google.com',
'douban': 'http://www.douban.com',
'python': 'http://www.python.org',
}
>>> del url['baidu'] #删除某个键值对
>>> url
{'google': 'http://www.google.com',
 'douban': 'http://www.douban.com',
 'python': 'http://www.python.org'}
>>> del url #删除整个字典
>>> url # url已不存在,会报错
Traceback (most recent call last):
  File "D:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-196-5446fb31b66c>", line 1, in <module>
    url
NameError: name 'url' is not defined

相关推荐

惠普1020打印机怎么连接电脑

1,先安装好打印机,将打印机的连接线接到电脑上,打开打印机电源。2,打开电脑,然后使用随机的打印机驱动程序或者到打印机的官网下载当前系统的驱动程序,然后点击安装。3,安装完成后,点击打印测试页,如...

win7打印机共享需要密码(win7共享打印机需要输入用户名和密码怎么办)

第一步:我们打开打印机文件夹,然后在打印机的图标上面点击鼠标右键,在弹出的对话框里面选择共享选项。如果没有这个选项,我们就需要在文件夹里面找到文件夹选项,在弹出的对话框理面找到选择简单文件共享,然后...

windows7是什么样的(windows7是什么型号)

1.Windows7驱动器是一种用于安装和管理硬件设备的软件程序。2.Windows7驱动器的作用是使计算机能够与各种硬件设备进行通信和交互。它通过提供必要的指令和接口,使硬件设备能够被操作系...

电脑序列号查询方法(电脑序列号查询方法是什么)
电脑序列号查询方法(电脑序列号查询方法是什么)

系统win71打开电脑,找到计算机图标,单击鼠标右键,出现菜单后,点击属性2进去页面,找到产品id,产品id右侧就是Windows序列号了方法/步骤1/3分步阅读快捷键win+r打开运行菜单,输入regedit,点击确定。2/3打开注册表,...

2025-12-26 05:55 liuian

摄像头软件app有哪些(摄像头软件叫什么名字)

和家亲监控摄像头好用,这是中国移动推出的一款智能设备管理app,其功能十分强大,不仅可以链接多个智慧设备,帮助用户在手机上管理智能家居,而且还可以在调整观看的视角,画质等等,以及支持回放和储存等等功能...

笔记本电脑键盘不能用了怎么办

如果是键盘驱动异常,更新键盘驱动即可,1、在开始里找到windows系统。2、打开控制面板,选择硬件与声音。3、点击设备和打印机选择笔记本,点击硬件找到键盘。4、点击改变设置,选择更改驱动程序。5、选...

深圳平板电脑厂家排名(深圳平板电脑厂家排名榜)

乐福尔的平板电脑还不错。原因是其功能全面,触控灵敏,屏幕显示效果好,外观设计美观,适合用来阅读、写作、观看视频等多种用途。此外,乐福尔平板电脑还具有长时间续航和较快的处理速度,能够满足用户日常使用的需...

苹果手机五笔输入法(五笔输入法手机版下载)

苹果手机有五笔的输入法,苹果手机自带输入法无五笔输入法,需要在AppStore下载一个五笔输入法,然后再添加到键盘中。工具/材料:苹果6手机1、打开手机桌面的appstore应用软件。2、然后搜索...

万能app破解器(万能app软件破解器)

1、以现有的技术手段,是没有办法破解WPA的加密方式(现在基本上全部WIFI的加密方式),WPA的加密方式安全性很高,根本就破不了。2、即使破解密码,人家也有可能设置了MAC地址过滤,还是上不去。3、...

笔记本电脑自带摄像头怎么开启

要使用笔记本电脑自带的摄像头,请按照以下步骤操作:1.打开你的电脑,进入桌面。2.定位摄像头,通常在笔记本电脑的上部或者展开的屏幕的中央位置。3.双击摄像头图标,或者在键盘上按下对应的快捷键,以...

怎么知道wifi密码(手机连接上wifi怎么知道wifi密码)

关于这个问题,如果您想查看已经连接过的无线网络密码,请按照以下步骤操作:对于Windows10:1.点击任务栏中的WiFi图标,选择“网络和Internet设置”2.在“网络和Internet设...

电脑如何调出任务管理器(电脑如何调出任务管理器快捷键)

在Windows操作系统中,可以通过以下方法调出任务管理器:使用快捷键:按下“Ctrl+Shift+Esc”快捷键组合,即可快速打开任务管理器。使用组合键:按下“Ctrl+Alt+...

win732位怎么还原系统(win732位gho)

系统安装失败,在以前的系统没有备份的情况下,是不能恢复的。只要诺顿开始运行,,不管进度条在什么位置,原系统都被格式化。如果有备份文件,那么方法是:1、打开系统备份还原软件:2、点击浏览,找到备份文件,...

电脑装什么杀毒软件(电脑装什么杀毒软件最安全)

好用的电脑杀毒软件,目前比较知名的有360杀软,腾讯电脑管家,金山毒霸,瑞星等杀毒软件,至于哪一个更好用,就看你自己的习惯了,我个人觉得360比较让人放心一些,这些年也一直用着360,比较安全有保证,...

u盘uefi是什么意思(u盘用uefi模式启动)

u盘启动盘是指在U盘里安装PE版的操作系统后,把系统设置成从U盘启动,然后电脑开机就从U盘开始重装系统。UEFI,全称“统一的可扩展固件接口”,是一种详细描述类型接口的标准。这种接口用于操作系统自动...