Python基础之什么是字典?
原创小白系列第 7 篇
4.5.1 什么是字典
字典是另外一个可变的数据结构,且可存储任意类型对象,比如字符串、数字、列表等。字典是由关键字和值两部分组成,也就是 key 和 value,中间用冒号分隔。这种结构类似于新华字典,字典中每一个字都有一个对应的解释,具体语法如下:
语法:
字典名 = { 关键字1:值,关键字2:值,关键字3:值}
每个键与值用冒号隔开(:),每对用逗号分割,整体放在花括号中({})。
键必须独一无二,但值则不必。可以有任意多个键值对
值可以取任何数据类型,但键必须是不可变的,如字符串,数或元组。
例子:
#构建一个字典,记录各宫嫔妃的年薪银子
name_dictionary = {'魏璎珞':300,'皇后':1000,'皇贵妃':800,'贵妃':600,'斌':200}
print(name_dictionary)
print('字典的数据类型表示是:',type(name_dictionary))
{'魏璎珞': 300, '皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200}
字典的数据类型表示是:
4.5.2 字典特性
字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。两个重要的点需要记住:
1.不允许同一个键出现两次:创建时如果同一个键被赋值两次,后一个值会被记住。
例子
# 定义两个同样的关键字Namedict = {'Name': 'Python', 'Age': 7, 'Name': 'Java'}print("dict['Name']: ", dict['Name'])
dict['Name']: ManniJava
2. 键必须不可变:所以可以用数,字符串或元组充当,所以用列表就不行
例子
# 关键字Name为列表dict = {['Name']:'Python', 'Age': 7};print ("dict['Name']: ", dict['Name'])
File "/Users/yoni.ma/PycharmProjects/seven_days_python/Forth_day_strcure/dict_p.py", line 22, in
dict['Name']: Java
dict = {['Name']:'Python', 'Age': 7};
TypeError: unhashable type: 'list'
4.5.3 字典的基本操作
字典在python中的类型表示是 。当查看到变量的类型是dict,则可以对其进行字典的操作。常见的字典操作是访问字典、遍历字典等。这些操作在实际项目中经常被使用到,比如excel文件读入内存以后,按照字典的方法存放。然后对其增加或删除值。
1.访问字典
访问字典也就是获取关键字对应的值,方法是指定字典名和放在方括号内的关键字,具体如下。获取后的值可以赋值给变量。
语法:
变量名 = 字典名[关键字]
例子
# 访问字典
weiyingluo = name_dictionary['魏璎珞']
print(f'魏璎珞的年薪是:{weiyingluo}两')
魏璎珞的年薪是:300两
2.添加键值对
字典是一种可变的数据结构,可以随时添加或者删除其中的键值对。其中添加键值的方法是,指定字典名、用方括号括起的键和相关的值,具体如下。
语法:
字典名[关键字名] = 值
例子
# 增加贵人和常在的年薪银子
print(f'原来的后宫年薪字典是:{name_dictionary}')
name_dictionary['贵人'] = 100
name_dictionary['常在'] = 50
print(F'增加键值后的后宫年薪字典变成:{name_dictionary}')
原来的后宫年薪字典是:{'魏璎珞': 300, '皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200}
增加键值后的后宫年薪字典变成:{'魏璎珞': 300, '皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200, '贵人': 100, '常在': 50}
3.修改键值对
如果字典中的值不是我们想要的,可以通过修改的方法达到。以此指定字典名、用方括号括起的键以及与该键相对应的新值。
语法:
字典名[关键字名] = 新的值
例子
# 修改字典的值,比如修改常在的年薪为70两
print('常在原来的年薪是{} 两'.format(name_dictionary['常在']))
name_dictionary['常在']= 70
change_changzai = name_dictionary['常在']
print(f'常在修改后的年薪是{change_changzai} 两')
常在原来的年薪是50 两
常在修改后的年薪是70 两
4删除键值对
如果字典中的键值对不再需要,我们可以彻底删除。Python使用的是del语句,必须要指定要删除的字典名和关键字。注意是永久删除
语法:
del 字典名[关键字]
例子
#删除字典中的键值对,比如删除常在
del name_dictionary['常在']
print(f'删除常在后的后宫嫔妃年薪字典变成:{name_dictionary}')
删除常在后的后宫嫔妃年薪字典变成:{'魏璎珞': 300, '皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200, '贵人': 100}
如果我们还需要用到被删除的键值对,则我们使用pop(‘键的名字’)方法。该方法是删除字典给定键所对应的值,并且返回该值。
print('原来的字典是:', name_dictionary)# 使用pop方法删除魏璎珞name_pop = name_dictionary.pop('魏璎珞')# 使用删除后的值print('魏璎珞的年薪是:',name_pop)print('使用pop方法删除后的字典是:',name_dictionary)
原来的字典是: {'魏璎珞': 300, '皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200, '贵人': 100}
魏璎珞的年薪是: 300
使用pop方法删除后的字典是: {'皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200, '贵人': 100}
除了pop()方法以外, Python中还有一个popitem()方法。它可以随机删除字典中的一对(一般删除末尾一对),并且可以被后续的程序使用。我们经常用此方法逐个删除字典中的所有键值对。
# 随机删除字典中的一对pop_name = name_dictionary.popitem()print('使用popitem删除的是:',pop_name)print('随机删除字典中一对键值对后:',name_dictionary)pop2_name = name_dictionary.popitem()print('再次使用popitem删除的是:',pop2_name)print('再次随机删除字典中一对键值对后:',name_dictionary)
使用popitem删除的是:('贵人', 100)
随机删除字典中一对键值对后: {'皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200}
再次使用popitem删除的是: ('斌', 200)
再次随机删除字典中一对键值对后: {'皇后': 1000, '皇贵妃': 800, '贵妃': 600}
如果需要删除所有的键值对,我们可以使用clear()方法清空所有的数据。但是需要注意del语句是删除字典,此时打印删除后的字典则出错。两者是有区别的。
# clear()方法清除字典中的所有数据print('原来字典的长度是:',len(name_dictionary))name_dictionary.clear()print('使用clear清除字典中的所有内容:',name_dictionary)print('清空以后字典的长度是:',len(name_dictionary))# 使用del删除字典del name_dictionary# 字典已经被删除,则再次打印则出错:name 'name_dictionary' is not definedprint(name_dictionary)
原来字典的长度是: 3
使用clear清除字典中的所有内容: {}
清空以后字典的长度是: 0
Traceback (most recent call last):
File "/Users/seven_days_python/Forth_day_strcure/dict_p.py", line 139, in
print(name_dictionary)
NameError: name 'name_dictionary' is not defined
5.创建空字典
在实际项目中,我们可能不知道字典中存放的内容是什么。这时,我们可以采用从空的字典开始动态创建,也就是在程序运行的时候添加具体的内容。
常见的使用场景是:第一个:需要用户输入数据存储为字典;第二个是自动生成大量的键值对,比如爬虫,爬取豆瓣电影的排名信息。我们可以把排名放入空的字典中,然后每次爬取一个电影,添加一个对应的键值对。
例子
# 从空的字典开始创建
douban_movies = {} #定义空的字典
douban_movies['排名'] = 1
douban_movies['片名'] = '霸王别姬'
douban_movies['主演'] = '张国荣、张丰毅、巩俐'
douban_movies['导演'] = '陈凯歌'
print('从空的列表中构建字典:',douban_movies)
从空的列表中构建字典: {'排名': 1, '片名': '霸王别姬', '主演': '张国荣、张丰毅、巩俐', '导演': '陈凯歌'}
以上内容摘自《零基础轻松学 Python》
零基础学 Python,来这里
Python基础之什么是字典?相关推荐
- Python基础(四)--字典与集合
Python基础(四)--字典与集合 1 字典 1.1 什么是字典 字典提供的是一种映射存储的方式.字典分为两个部分,一个是键(key),一个是key所关联的值(value).,一个键关联(或绑定)一 ...
- Day2 - Python基础2 列表、字典、集合 --转自金角大王
Day2 - Python基础2 列表.字典.集合 --转自金角大王 Posted on 2018-01-24 13:23 Byd_lei 阅读(41) 评论(0) 编辑 收藏 本节内容 列表.元组 ...
- Day2 - Python基础2 列表、字典、集合
Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过 ...
- Python 基础起步 (七) 初识字典 Dictionary(绝命毒师前传)
大家好,我是小白,书接上回,我们目前已经了解到了Python中很常见的一种数据类型:List,也初步掌握了一些Python自带的有关List的方法,今天为大家介绍另外一种异常火爆的数据结构:字典Dic ...
- Python基础教程:列表字典的键值修改
list (修改列表的索引值) 循环一个列表时,最好不要对原列表有改变大小的操作,这样会影响你的最终结果. #使用负索引进行修改列表 print('First') lis = [11, 22, 33, ...
- Python基础知识:当字典碰到类时会发生什么?
字典(dict)是Python语言中内置的一种数据类型,在Python的类中灵活使用字典可能会起到意想不到的效果,简化我们的编程代码,下面通过一个例子进行说明. 类的定义 先看下面一个类的定义,代码如 ...
- Python基础刻意练习:字典与集合
本系列定位为复习笔记,某些内容并未提及. 在此记录一些典型疑问和我在学习中的问题或经常遗忘的细节,也会添加一些觉得有意思的部分(其实就是随心所欲 ) 内容主要使用代码进行传达 字典(哈希表)的创建与索 ...
- Python基础(元祖字典)
1.元祖和字典的格式 1,访问元祖: 结果: 2,修改元祖 结果: 在 python中不允许修改元组的数据,包括不能删除其中的元素. 3,元组的内置函数count, index index和coun ...
- 神奇的python系列5:python基础数据类型三(字典)
第一步 字典 字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成.字典用于存储数据,字典的查找快一些. 字典dict 键值对数据 dic = {'键':' ...
最新文章
- ios 静态库合成_iOS链接原理解析与应用实践
- 【全文搜索引擎】Elasticsearch相关介绍与linux系统安装
- 值得推荐的C/C++框架和库(转载)
- HTTP简介,http是一个属于应用层的面向对象的协议
- MONGODB 2.6.8 的一个BUG [Assertion: 13548:BufBuilder attempted to grow() to 134217728 bytes, past the ]
- php设置accept,PHP或htaccess通过Accept-Language重写URL?
- 深入理解字符编码(ASCII、Unicode、UTF-8、UTF-16、UTF-32)
- DataGridView绑定对象数组 c# 1614236580
- Ansible批量修改root密码
- Java Nashorn--Part 1
- 1.PHP核心技术与最佳实践 --- 面向对象思想的核心概念
- 【人脸识别】基于matlab GUI肤色人脸识别定位【含Matlab源码 674期】
- 图片压缩大小的3种方法,简单快捷实用!
- git config配置
- 短信通知接口json报文开发设计总结
- 台式电脑由哪些部件组成,有哪些配件组成?
- 用计算机做图画ppt,用计算机画图课件.ppt
- English——slang about body
- 如何UNI-APP中使用iconfont彩色图标
- 服务条目与采购订单、采购申请、工单、项目及WBS的关系