原创小白系列第 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基础之什么是字典?相关推荐

  1. Python基础(四)--字典与集合

    Python基础(四)--字典与集合 1 字典 1.1 什么是字典 字典提供的是一种映射存储的方式.字典分为两个部分,一个是键(key),一个是key所关联的值(value).,一个键关联(或绑定)一 ...

  2. Day2 - Python基础2 列表、字典、集合 --转自金角大王

    Day2 - Python基础2 列表.字典.集合 --转自金角大王 Posted on 2018-01-24 13:23 Byd_lei 阅读(41) 评论(0)  编辑 收藏 本节内容 列表.元组 ...

  3. Day2 - Python基础2 列表、字典、集合

    Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过 ...

  4. Python 基础起步 (七) 初识字典 Dictionary(绝命毒师前传)

    大家好,我是小白,书接上回,我们目前已经了解到了Python中很常见的一种数据类型:List,也初步掌握了一些Python自带的有关List的方法,今天为大家介绍另外一种异常火爆的数据结构:字典Dic ...

  5. Python基础教程:列表字典的键值修改

    list (修改列表的索引值) 循环一个列表时,最好不要对原列表有改变大小的操作,这样会影响你的最终结果. #使用负索引进行修改列表 print('First') lis = [11, 22, 33, ...

  6. Python基础知识:当字典碰到类时会发生什么?

    字典(dict)是Python语言中内置的一种数据类型,在Python的类中灵活使用字典可能会起到意想不到的效果,简化我们的编程代码,下面通过一个例子进行说明. 类的定义 先看下面一个类的定义,代码如 ...

  7. Python基础刻意练习:字典与集合

    本系列定位为复习笔记,某些内容并未提及. 在此记录一些典型疑问和我在学习中的问题或经常遗忘的细节,也会添加一些觉得有意思的部分(其实就是随心所欲 ) 内容主要使用代码进行传达 字典(哈希表)的创建与索 ...

  8. Python基础(元祖字典)

    1.元祖和字典的格式 1,访问元祖: 结果: 2,修改元祖 结果: 在 python中不允许修改元组的数据,包括不能删除其中的元素.  3,元组的内置函数count, index index和coun ...

  9. 神奇的python系列5:python基础数据类型三(字典)

    第一步 字典 字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成.字典用于存储数据,字典的查找快一些. 字典dict    键值对数据     dic = {'键':' ...

最新文章

  1. ios 静态库合成_iOS链接原理解析与应用实践
  2. 【全文搜索引擎】Elasticsearch相关介绍与linux系统安装
  3. 值得推荐的C/C++框架和库(转载)
  4. HTTP简介,http是一个属于应用层的面向对象的协议
  5. MONGODB 2.6.8 的一个BUG [Assertion: 13548:BufBuilder attempted to grow() to 134217728 bytes, past the ]
  6. php设置accept,PHP或htaccess通过Accept-Language重写URL?
  7. 深入理解字符编码(ASCII、Unicode、UTF-8、UTF-16、UTF-32)
  8. DataGridView绑定对象数组 c# 1614236580
  9. Ansible批量修改root密码
  10. Java Nashorn--Part 1
  11. 1.PHP核心技术与最佳实践 --- 面向对象思想的核心概念
  12. 【人脸识别】基于matlab GUI肤色人脸识别定位【含Matlab源码 674期】
  13. 图片压缩大小的3种方法,简单快捷实用!
  14. git config配置
  15. 短信通知接口json报文开发设计总结
  16. 台式电脑由哪些部件组成,有哪些配件组成?
  17. 用计算机做图画ppt,用计算机画图课件.ppt
  18. English——slang about body
  19. 如何UNI-APP中使用iconfont彩色图标
  20. 服务条目与采购订单、采购申请、工单、项目及WBS的关系

热门文章

  1. 【附源码】计算机毕业设计SSM民宿客房管理系统
  2. Web安全学习笔记一 序章
  3. Alibaba Cloud Toolkit —— 项目一键部署工具
  4. 机器学习基石 5.3 Effective Number of Hypotheses
  5. Django项目中使用第三方登录——支付宝登录
  6. 设置JSP页脚版权标识
  7. 分享111个ASP源码,总有一款适合您
  8. plc梯形图的c语言写法,PLC梯形图讲解.ppt
  9. Windows 平台下局域网劫持测试工具 – EvilFoca
  10. Genymotion Booting 安卓虚拟机 一直加载问题