python字典的概念与基本操作
字典是非常常用的一种数据结构,它与json格式的数据非常相似,核心就是以键值对的形式存储数据,关于Python中的字典做如下四点说明:
1.构造字典对象需要用大括号表示 {},每个字典元素都是以键值对的形式存在,并且键值对之间用英文状态下的'':''隔开
2.键在字典中是唯一的,不能有重复,对于字符型的键需要用引号引起来。值可以是单个值,也可以是多个值构成的列表,元组或字典
3.字典不再是序列,无法通过为止索引完成元素值的获取,只能通过键索引实现。
4.字典与列表一样,都是可变类型的数据结构。
dict1={'姓名':'张三','年龄':'33','性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']}
print(dict1)
print(dict1['年龄'])
print(dict1['子女']['儿子'])
print(dict1['兴趣'][1])
out:
{'姓名': '张三', '年龄': '33', '子女': {'儿子': '张四', '女儿': '张美'}, '性别': '男', '兴趣': ['踢球', '游泳', '唱歌']}
33 张四
游泳 #对于字典来说,它不再是序列,通过第一条输出的结果可知,构造时的字典元素与输出时的字典元素顺序已经发生了变化,想要获取元素的值,只能
在索引里面写入具体的键。
字典元素的基本操作方法:
1.字典元素的增加
一般使用以下三种方式实现:分别是:setdefault,update方法和键索引方法:
接上面的举例:
dict1.setdefault('户籍','合肥') #往字典中增加户籍信息 此处需要注意一点,不是('户籍':'合肥')
dict1.update({'学历':'硕士'}) #添加学历信息 通过update的方式增加,添加的是字典形式的对象
dict1['身高'] = 178 #增加身高信息 通过直接键索引的方法直接设定对象并赋值即可 2.字典元素的删除
关于字典元素的删除可以使用pop,poptiem和clear三种方法实现。
例如:
dict1.pop('户籍') #删除户籍信息
dict1['子女'].pop('女儿') #删除字典中女儿的姓名
dict1.popitem() #删除字典的最后一个元素
dict1.clear() #清除字典元素 3.字典元素的修改
字典元素的修改如增加部分提到的,也可以使用update方法和键索方法完成字典元素的修改.需要注意的是如果字典中的值是另一个字典或列表,
需要先通过键索引实现字典元素的查询,然后在查询的基础上应用对应的修改方法即可(如update方法,取而代之).如下列出另外的几个比较重要的方法:
dict2 = {'电影':['三傻大闹宝莱坞','大话西游之大圣娶亲','疯狂动物城'],
'导演':['张三','李四','刘德华'],'评分':[9.1,9.2,9.3]}
print(dict2.get('评分'))
print(dict2.keys())
print(dict2.values())
print(dict2.items())
get方法的功能与建索引已知,可以从字典中取出键对应的值.所不同的是,如果某个键在字典中不存在,应用建索引的方法出产生'键错误'的信息;
而get方法不会报错,如果没有get到的话会显示None,也就不会影响其他脚本的正常执行.keys,values和items方法分别取出字典中的所有键,值和键值对. 另外 keys(),values()和items()方法都可以用于字典的操作,值得注意一点的是,用这三个方法返回类似的列表的值,但这个返回值不是真正的列表,它们不能被修改,没有append()
方法,但这些数据类型可以用于for循环。如:
for v in spam.values():
print(v) 字典中的get()方法
在访问一个键的值之前,检查该键是否存在于字典中,这很麻烦。好在,字典有一个get()方法,它有两个参数:要取得其值的键,以及如果该键不存在事,返回的备用值,如下例题中
设置的备用值就是 0,你也可以指定 。 例如:
picnicItems = {'apples':5,'cups':2}
print(str(picnicItems.get('cups',0))+ 'cups.')
print(str(picnicItems.get('eggs',0))+ 'eggs.')
out:
2cups.
0eggs. picnicItems字典中没有‘eggs’,get()方法返回备用值0.如有这个键就返回具体的值,如例题的是 2
setdefault()方法
常常需要为字典中的某个键设置一个默认值,当该键没有任何值时就使用它代替。
例如:
>>> spam = {'name':'Pooka','age':5}
>>> spam.setdefault('color','black')
'black'
>>> spam
{'name': 'Pooka', 'age': 5, 'color': 'black'}
>>> spam.setdefault('color','white')
'black'
>>> spam
{'name': 'Pooka', 'age': 5, 'color': 'black'}
第一次调用setdefault()时,spam变量中的字典变为:{'name': 'Pooka', 'age': 5, 'color': 'black'} 该方法返回值‘black’,因为现在该值被赋给键‘color’。当接下来
spam.setdefault('color','white'),该键的值没有被改成 white,因为spam变量已经有一个名为 color的键了。
setdefault()方法是个很好的快捷方式,可以确保一个键存在。如下:
message = 'It was a bright cold day in April ,and the clocks wre striking thirteen.'
count = {}
for character in message:
count.setdefault(character,0)
count[character] = count[character] + 1
print(count)
out:
{'I': 1, 't': 6, ' ': 13, 'w': 2, 'a': 4, 's': 3, 'b': 1, 'r': 5, 'i': 6, 'g': 2, 'h': 3, 'c': 3, 'o': 2, 'l': 3, 'd': 3, 'y': 1, 'n': 4, 'A': 1, 'p': 1, ',': 1, 'e': 4, 'k': 2, '.': 1} 如上,用setdefault()方法,确保count字典中的初始值都是0,这样执行count[character] = count[character] + 1 时就不是出现KeyError的错误;
python字典的概念与基本操作的更多相关文章
- python文件(概念、基本操作、常用操作、文本文件的编码方式)
文件 目标 文件的概念 文件的基本操作 文件/文件夹的常用操作 文本文件的编码方式 01. 文件的概念 1.1 文件的概念和作用 计算机的 文件,就是存储在某种 长期储存设备 上的一段 数据 长期存储 ...
- Python 字典Dict概念和操作
# 字典概念:无序的, 可变的键值对集合 # 定义 # 方式1 # {key: value, key: value...} # 例如 # {"name": "xin&qu ...
- python元组的概念与基本操作
元组与列表类似,关于元组同样需要做如下三点: A.概念 1.元组通过英文状态下的圆括号构成“()”.其存放元素与列表一样,可以是不通的数值类型,也可以是不通的数据结构. 2.元组仍然是一种序列,所以几 ...
- Python 字典(Dictionary) 基本操作
Python字典是一种可变容器模型,可存储任意类型对象:如字符串.数字.元组等.它以键值对(key-value)的形式存在,因此相当于Hashmap在python中的实现. §1. 创建字典 字典由 ...
- PythonStudy——Python字典底层实现原理 The underlying implementation principle of Python dictionary
在Python中,字典是通过散列表或说哈希表实现的.字典也被称为关联数组,还称为哈希数组等.也就是说,字典也是一个数组,但数组的索引是键经过哈希函数处理后得到的散列值.哈希函数的目的是使键均匀地分布在 ...
- python 字典有序无序及查找效率,hash表
刚学python的时候认为字典是无序,通过多次插入,如di = {}, 多次di['testkey']='testvalue' 这样测试来证明无序的.后来接触到了字典查找效率这个东西,查了一下,原来字 ...
- python字典构造函数dict(mapping)解析
Python字典的构造函数有三个,dict().dict(**args).dict(mapping),当中第一个.第二个构造函数比較好理解也比較easy使用, 而dict(mapping)这个构造函数 ...
- Python字典实现
这篇文章描述了在Python中字典是如何实现的. 字典通过键(key)来索引,它可以被看做是关联数组.我们在一个字典中添加3个键/值对: >>> d = {'a': 1, 'b': ...
- 第3.5节 丰富的Python字典操作
一. 基本概念 Python提供一种通过名称来访问其各个值的数据结构,这种数据结构称为映射(mapping).字典(dict)是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下, ...
随机推荐
- 443端口被占用无法启动解决办法(如何查找进程ID)
摘自CSDN博客,原文地址:http://blog.csdn.net/pet8766/article/details/8186955 netstat -ano|findstr "443&qu ...
- 关于android的监听器
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bu ...
- Day04_乐优商城项目搭建
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...
- Python File close() 方法
概述 close() 方法用于关闭一个已打开的文件.高佣联盟 www.cgewang.com 关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误. close() 方法允许调用多 ...
- HTML <html> xmlns 属性
实例 一个简单的 XHTML 文档,带有最少的必需标签: <html xmlns="http://www.w3.org/1999/xhtml"><head> ...
- PHP password_get_info() 函数
password_get_info() 函数用于返回指定散列(hash)的相关信息. PHP 版本要求: PHP 5 >= 5.5.0, PHP 7高佣联盟 www.cgewang.com 语法 ...
- C/C++编程笔记:C语言入门知识点(三),请收藏C语言最全笔记!
今天我们继续来学习C语言的入门知识点,第一课:C/C++编程笔记:C语言入门知识点(二),请收藏C语言最全笔记! 21. 输入 & 输出 当我们提到输入时,这意味着要向程序填充一些数据.输入可 ...
- luogu P4166 [SCOI2007]最大土地面积 凸包 旋转卡壳
LINK:最大土地面积 容易想到四边形的边在凸包上面 考虑暴力枚举凸包上的四个点计算面积. 不过可以想到可以直接枚举对角线的两个点找到再在两边各找一个点 这样复杂度为\(n^3\) 可以得到50分. ...
- Vue通过Blob对象实现导出Excel功能
不同的项目有不同的导出需求,有些只导出当前所显示结果页面的表格进入excel,这个时候就有很多插件,比如vue-json-excel或者是Blob.js+Export2Excel.js来实现导出Exc ...
- 如何查看Docker容器环境变量,如何向容器传递环境变量
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! 了解Docker容器的运行环境非常重要,我们把应用放在容器里执行,环境变量会直接影响程序的执行效果.所以我们要知道容器内部的 ...