Python 字典类型
1、由于字典中的 key 是非常关键的数据,而且程序需要通过 key 来访问 value,因此字典中的 key 不允许重复。
程序既可使用花括号语法来创建字典,也可使用 dict() 函数来创建字典。实际上,dict 是一种类型,它就是 Python 中的字典类型。
在使用花括号语法创建字典时,花括号中应包含多个 key-value 对,key 与 value 之间用英文冒号隔开;多个 key-value 对之间用英文逗号隔开。
- scores = {'语文': 89, '数学': 92, '英语': 93}
- print(scores)
- # 空的花括号代表空的dict
- empty_dict = {}
- print(empty_dict)
- # 使用元组作为dict的key
- dict2 = {(20, 30):'good', 30:'bad'}
- print(dict2)
2、在使用 dict() 函数创建字典时,可以传入多个列表或元组参数作为 key-value 对,每个列表或元组将被当成一个 key-value 对,因此这些列表或元组都只能包含两个元素。例如如下代码:
- vegetables = [('celery', 1.58), ('brocoli', 1.29), ('lettuce', 2.19)]
- # 创建包含3组key-value对的字典
- dict3 = dict(vegetables)
- print(dict3) # {'celery': 1.58, 'brocoli': 1.29, 'lettuce': 2.19}
- cars = [['BMW', 8.5], ['BENS', 8.3], ['AUDI', 7.9]]
- # 创建包含3组key-value对的字典
- dict4 = dict(cars)
- print(dict4) # {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
3、对于初学者而言,应牢记字典包含多个 key-value 对,而 key 是字典的关键数据,因此程序对字典的操作都是基于 key 的。基本操作如下:
- 通过 key 访问 value 。
- 通过 key 添加 key-value 对。
- 通过 key 删除 key-value 对。
- 通过 key 修改 key-value 对。
- 通过 key 判断指定 key-value 对是否存在。
- 通过 key 访问 value 使用的也是方括号语法,就像前面介绍的列表和元组一样,只是此时在方括号中放的是 key,而不是列表或元组中的索引
如下代码示范了通过 key 访问 value:
- scores = {'语文': 89}
- # 通过key访问value
- print(scores['语文'])
如果要为 dict 添加 key-value 对,只需为不存在的 key 赋值即可:
- # 对不存在的key赋值,就是增加key-value对
- scores['数学'] = 93
- scores[92] = 5.7
- print(scores) # {'语文': 89, '数学': 93, 92: 5.7}
如果要删除宇典中的 key-value 对,则可使用 del 语句。例如如下代码:
- # 使用del语句删除key-value对
- del scores['语文']
- del scores['数学']
- print(scores) # {92: 5.7}
如果对 dict 中存在的 key-value 对赋值,新赋的 value 就会覆盖原有的 value,这样即可改变 dict 中的 key-value 对。例如如下代码:
- cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
- # 对存在的key-value对赋值,改变key-value对
- cars['BENS'] = 4.3
- cars['AUDI'] = 3.8
- print(cars) # {'BMW': 8.5, 'BENS': 4.3, 'AUDI': 3.8}
字典的常用方法
字典由 dict 类代表,因此我们同样可使用 dir(dict) 来查看该类包含哪些方法。在交互式解释器中输入 dir(dict) 命令,将看到如下输出结果:
>>> dir(dict)
['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
>>>
clear()方法:
clear() 用于清空字典中所有的 key-value 对,对一个字典执行 clear() 方法之后,该字典就会变成一个空字典。例如如下代码:
- cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
- print(cars) # {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
- # 清空cars所有key-value对
- cars.clear()
- print(cars) # {}
get()方法:
get() 方法其实就是根据 key 来获取 value,它相当于方括号语法的增强版,当使用方括号语法访问并不存在的 key 时,字典会引发 KeyError 错误;但如果使用 get() 方法访问不存在的 key,该方法会简单地返回 None,不会导致错误。例如如下代码:
- cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
- # 获取'BMW'对应的value
- print(cars.get('BMW')) # 8.5
- print(cars.get('PORSCHE')) # None
- print(cars['PORSCHE']) # KeyError
update()方法:
update() 方法可使用一个字典所包含的 key-value 对来更新己有的字典。在执行 update() 方法时,如果被更新的字典中己包含对应的 key-value 对,那么原 value 会被覆盖;如果被更新的字典中不包含对应的 key-value 对,则该 key-value 对被添加进去。例如如下代码:
- cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
- cars.update({'BMW':4.5, 'PORSCHE': 9.3})
- print(cars)#{'BMW': 4.5, 'BENS': 8.3, 'AUDI': 7.9, 'PORSCHE': 9.3}
从上面的执行过程可以看出,由于被更新的 dict 中己包含 key 为“AUDI”的 key-value 对,因此更新时该 key-value 对的 value 将被改写;但如果被更新的 dict 中不包含 key 为“PORSCHE”的 key-value 对,那么更新时就会为原字典增加一个 key-value 对。
items()、keys()、values() 挺常用的 节省时间
items()、keys()、values() 分别用于获取字典中的所有 key-value 对、所有 key、所有 value。这三个方法依次返回 dict_items、dict_keys 和 dict_values 对象,Python 不希望用户直接操作这几个方法,但可通过 list() 函数把它们转换成列表。如下代码示范了这三个方法的用法:
- cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
- # 获取字典所有的key-value对,返回一个dict_items对象
- ims = cars.items()
- print(type(ims)) # <class 'dict_items'>
- # 将dict_items转换成列表
- print(list(ims)) # [('BMW', 8.5), ('BENS', 8.3), ('AUDI', 7.9)]
- # 访问第2个key-value对
- print(list(ims)[1]) # ('BENS', 8.3)
- # 获取字典所有的key,返回一个dict_keys对象
- kys = cars.keys()
- print(type(kys)) # <class 'dict_keys'>
- # 将dict_keys转换成列表
- print(list(kys)) # ['BMW', 'BENS', 'AUDI']
- # 访问第2个key
- print(list(kys)[1]) # 'BENS'
- # 获取字典所有的value,返回一个dict_values对象
- vals = cars.values()
- # 将dict_values转换成列表
- print(type(vals)) # [8.5, 8.3, 7.9]
- # 访问第2个value
- print(list(vals)[1]) # 8.3
从上面代码可以看出,程序调用字典的 items()、keys()、values() 方法之后,都需要调用 list() 函数将它们转换为列表,这样即可把这三个方法的返回值转换为列表。
setdefault()方法
setdefault() 方法也用于根据 key 来获取对应 value 的值。但该方法有一个额外的功能,即当程序要获取的 key 在字典中不存在时,该方法会先为这个不存在的 key 设置一个默认的 value,然后再返回该 key 对应的 value。
总之,setdefault() 方法总能返回指定 key 对应的 value;如果该 key-value 对存在,则直接返回该 key 对应的 value;如果该 key-value 对不存在,则先为该 key 设置默认的 value,然后再返回该 key 对应的 value。
如下代码示范了 setdefault() 方法的用法:
- cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
- # 设置默认值,该key在dict中不存在,新增key-value对
- print(cars.setdefault('PORSCHE', 9.2)) # 9.2
- print(cars)
- # 设置默认值,该key在dict中存在,不会修改dict内容
- print(cars.setdefault('BMW', 3.4)) # 8.5
- print(cars)
fromkeys()方法
fromkeys() 方法使用给定的多个 key 创建字典,这些 key 对应的 value 默认都是 None;也可以额外传入一个参数作为默认的 value。该方法一般不会使用字典对象调用(没什么意义),通常会使用 dict 类直接调用。例如如下代码:
- # 使用列表创建包含2个key的字典
- a_dict = dict.fromkeys(['a', 'b'])
- print(a_dict) # {'a': None, 'b': None}
- # 使用元组创建包含2个key的字典
- b_dict = dict.fromkeys((13, 17))
- print(b_dict) # {13: None, 17: None}
- # 使用元组创建包含2个key的字典,指定默认的value
- c_dict = dict.fromkeys((13, 17), 'good')
- print(c_dict) # {13: 'good', 17: 'good'}
Python 字典类型的更多相关文章
- [转载]关于python字典类型最疯狂的表达方式
一个Python字典表达式谜题 让我们探究一下下面这个晦涩的python字典表达式,以找出在python解释器的中未知的内部到底发生了什么. # 一个python谜题:这是一个秘密 # 这个表达式计算 ...
- python字典类型
字典类型简介 字典(dict)是存储key/value数据的容器,也就是所谓的map.hash.关联数组.无论是什么称呼,都是键值对存储的方式. 在python中,dict类型使用大括号包围: D = ...
- Python字典类型、
字典类型: # msg_dic = {# 'apple': 10,# 'tesla': 100000,# 'mac': 3000,# 'lenovo': 30000,# ...
- python中字典类型的使用
Python字典类型 字典是一种键值对的集合,键值对之间无序 字典类型的定义 采用{}或者dict()来创建字典对象,键值对之间使用:进行分隔. {<键1>:<值1>, < ...
- Python字典及相关操作(内含例题)
Python字典类型 今天将会介绍一种在python中十分常见的组合数据类型——字典 通过一些实例来理解字典中的常规操作 什么是字典类型? 列表中查找是通过整数的索引(元素在列表中的序号)来实现查找功 ...
- python字典中的元素类型
python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...
- Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习
#coding=utf-8 __author__ = 'Administrator' #Python变量类型 #Python数字,python支持四种不同的数据类型 int整型 long长整型 flo ...
- python数据类型——字典类型
字典(dictionary) python中唯一的映射类型,采用键值对(key-value)的形式储存数据,python对key进行哈希函数运算,所以key值必须是可哈希的,可哈希表示key必须是不可 ...
- Python编程Day6——元组类型、字典类型、集合
一.元组类型(tuple) 1.用途:记录多个值,当多个值没有改变的需求此时元组更为合适 2.定义:在()内用逗号分隔开多个任意类型的值(参数为for可以循环的对象) 3.常用操作: 索引(正取向+反 ...
- Python的字典类型
Python的字典类型为dict,用{}来表示,字典存放键值对数据,每个键值对用:号分隔,每个键值对之间用,号分隔,其基本格式如下: d = {key1 : value1, key2 : value2 ...
随机推荐
- MariaDB 搭建主备及主主
一.主备 可参考:MariaDB之GTID主从复制 二.主主
- 查看nohup.out 日志文件
1.查看实时日志: tail -f nohup.out 2.查看实时日志并检索关键字: tail -f nohup.out | grep "关键字" 3.查看文件最后100行日志: ...
- 小白之Linux基础命令
命令大全 : http://man.linuxde.net/touch --------------------------20170802晚linux ls--显示当前路径下的文件及文件夹名字cd ...
- supervisor+gunicorn+uvicorn部署fastapi项目
一.编写一个项目 本项目是在虚拟环境下的: 先启动虚拟环境:source .venv/bin/activate.(创建虚拟环境自己去找) 项目用于演示,所以非常简单, 在虚拟环境中安装需要的第三方库: ...
- 【PS】PS如何删除图片中的白字
[PS]PS如何删除图片中的白字 首先打开ps,然后导入要操作的图片,接着选择左边工具栏中的魔棒工具. 对所要操作的文字进行框选,可以按住shift键进行连续操作 点击上方工具栏中的选择 | 修改 | ...
- 杂:python获取所有盘符简单粗暴版
def _test_p_get_all_driver(): l = [] for i in range(97, 123): d = chr(i) + ':\\' ...
- vue资料链接
vue 官方api:https://cn.vuejs.org/ vue资源精选:http://vue.awesometiny.com/ vue GitHub地址:https://github.com/ ...
- Springboot打包部署的步骤
1.配置pom.xml 引入插件 <groupId>com.bostech</groupId> <artifactId>dcs</artifactId> ...
- 记录web面经
1. npm版本号含义 例如: 2.3.1 (分别表示: 大版本,小版本, 补丁版本)大版本号: 大版本更新,功能添加,向下不兼容.小版本号:功能新增,向下兼容.补丁版本号: 修复bug.~符号含义: ...
- android控制台应用binder通讯
在android root环境下,有一个后台服务server进程需要提供接口给控制台应用client调用,本来想用socket方式来做的,后台发现android有更高效的方式来实现.那就是binder ...