侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python字典基本操作有哪些

Python  /  管理员 发布于 7年前   208

字典是python中五中基本数据类型之一,虽然它的赋值稍微麻烦点,但用起来真的是很方便。它用键值对来存放数据,所谓键值对,就是一个键,对应一个值,如果后面对前面的键再次赋值,第一次的值就被覆盖掉。

1:字典的创建

我们知道,python中列表用‘[]’表示,元祖用‘()’表示,字典用的是'{}'表示,创建较列表、元祖、字符串来说较为麻烦点,但只要记住键值对这三个字,就能正确创建一个字典类型的变量的,看下面代码

d = {'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}print(d)print(type(d))print(d['a'])print(d['c'][1])print(d['d'][1])

输出结果如下:

{'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}
<class 'dict'>
我是a
2

第一行我们创建了一个叫d的字典类型,在创建时,我们把每一个键名都用英文的引号印起来,而键值可以是任意数据类型,比如a这个键的键值是字符串,b这个键的兼职是数字,c这个键的键值是列表,d这个键的键值是元组

第三行,输出整个字典,看,它长得是不是和我们创建时一模一样,

第四行,利用type函数检查d这个变量的数据类型,输出时dict,没错,dict就表示字典了,像list表示列表一样

第五行,值输出了字典里面a这个键的键值

第六行,输出c这个键值里面的第二个元素,c的键值是list类型,所以我们可以像操作列表那样操作d['c']

第七航,与第六行类似,只不过键值类型换成的元祖

2:修改字典

在创建字典时,我们为每一个键都指明了键值,如果后面我们想要修改这个键的键值怎么办呢?也很简单,只需要对这个键重新赋值就可以了,如下:

d = {'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}print(d['a'])d['a'] = '我是被修改后的a'print(d['a'])

输出结果如下:

我是a
我是被修改后的a

第四行我们输出了最初a这个键的键值,第五行对a的键值进行修改,第六行输出被修改后的a的键值

3:字典的删除

如果我们在创建完成一个字典后,想要删除字典里面的某个键,或者是整个字典,这时我们可以用 del 方法。

d = {'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}print(d['a'])del d['a']print(d['a'])

输出如下

我是a
Traceback (most recent call last):
File "E:/py project/杂例/dict_demo.py", line 8, in <module>
print(d['a'])
KeyError: 'a'

上面第四行,我们先输出的a的键值,人后利用 del 对a这个键进行删除,在第六行再次访问a这个键,就会报错KeyError: 'a'

如果我们想要一次性删除整个字典怎么办呢?也很简单,只要对第五行的代码稍作修改,删掉d后面的['a'],在 del 后面直接跟字典名就可以了。

还可以利用字典的 pop()方法进行删除 del 方法在删除的时候不存在返回值,二pop会返回被删除键的键值,如果这个键不存在,还可以返回指定的错误信息,如下:

d = {'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}print(d['a'])print(d.pop('a', '123456'))print(d.pop('e', '这个键不存在,无法删除'))输入结果如下:我是a我是a这个键不存在,无法删除

第三行输出a键的值

第四行删除a键,并返回a键的值,因为这个键是存在于字典中的,所以不会返回后面的‘123456’

第五行删除e键,而这个键不存在与字典中,所以返回后面的错误信息‘这个键不存在,无法删除’

4:字典的清空

有些时候,我们想要删除的不是整个字典,而只是字典里面的内容呢,这个时候,我们可以使用字典的clear方法,来对字典进行一个清空,操作如下

d = {'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}d.clear()print(d)输出如下:{}

可以看出,此时d已经成为了一个空字典

5:.get方法访问键

字典['键名']这种方法虽然访问字典里面的某个键很方便,但也存在一些不足,如果这个键不存在,程序就会终止,阻碍程序的正常运行,如果想要返回正确的错误信息,并让程序继续运行下去,就可以用 .get 方法来访问字典里面的键,

d = {'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}print(d.get('e', '这个键不存在'))print(d['e'])输入如下:这个键不存在Traceback (most recent call last):  File "E:/py project/杂例/dict_demo.py", line 6, in <module>    print(d['e'])KeyError: 'e'

第三第四行都访问了一个字典中不存在的键,而第三行用 .get 方法访问,返回设置好的错误信息,程序继续向下运行,第四行普通方法访问,程序报错、终止

6:in 操作符

在字典中,我们可以利用 in 操作符判断键是否存在于字典中,如果键在字典 dict 里返回 true,否则返回 false。看下面简单代码

d = {'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}print('a' in d)print('e' in d)

输出结果如下:

True
False

第四行,‘a’这个键在字典中,返回True,第五行,‘’e这个键不在字典中,返回false

7:获取字典中键值对

现在我们已经知道,字典是以键值对(键和它对应的键值)的形式存储数据的,那么有没有什么方法让我们一次性获取一个字典中所有的键值对呢?可以用items()方法

字典的 items() 方法以列表返回可遍历的(键, 值) 元组数组。意思就是返回一个列表,列表里面的每个元素都是元组,一个元祖就是字典里面的一对键值对。

d = {'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}print(d.items())for i, j in d.items():    print(i, j)

输出结果如下:

dict_items([('a', '我是a'), ('b', 1), ('c', [1, 2, 3]), ('d', (1, 2, 3))])
a 我是a
b 1
c [1, 2, 3]
d (1, 2, 3)

第三行,我们输出了items()的返回结果,可以清楚的看到每个元祖都是字典里面的一个键值对,可以使用list把它转换为一个列表,能帮助我们更好的访问里面的元素。

第五行,利用items()方法帮助我们遍历一个字典,每次输出一个键和它对应的键值。

8:获取键

items()方法可以帮助我们一次性获取所有的键值对,但如果我们只想要获取键呢?可以使用 keys() 方法

d = {'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}print(d.keys())l = list(d.keys())print(l)print(l[1])

输出结果如下:

dict_keys(['a', 'b', 'c', 'd'])
['a', 'b', 'c', 'd']
b

第三行的返回结果中,只有键,第四行把返回结果转换成了列表,第五行对这个列表进行输出,第六行输出列表中党的第二个元素,也就是字典的第二个键

9:获取值

既然能值获取到字典中的键,当然也能只获取字典中的字。就是values()方法

d = {'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}print(d.values())l = list(d.values())print(l)print(l[1])

输出结果如下:

dict_values(['我是a', 1, [1, 2, 3], (1, 2, 3)])
['我是a', 1, [1, 2, 3], (1, 2, 3)]

与keys方法类似,只不过返回结果是字典中所有的键值而已。

python学习网,免费的在线学习python平台,欢迎关注!

以上就是python字典基本操作有哪些的详细内容,更多请关注其它相关文章!


  • 上一条:
    python统计字符串中数字个数
    下一条:
    Centos 6.4 安装Python 2.7 python-pip的详细步骤
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客