python字典基本操作
字典是python中五中基本数据类型之一,虽然它的赋值稍微麻烦点,但用起来真的是很方便。它用键值对来存放数据,所谓键值对,就是一个键,对应一个值,如果后面对前面的键再次赋值,第一次的值就被覆盖掉。像是一夫一妻,‘小三’要想上位,必须把正房替换。
0x01:字典的创建
我们知道,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
2
第一行我们创建了一个叫d的字典类型,在创建时,我们把每一个键名都用英文的引号印起来,而键值可以是任意数据类型,比如a这个键的键值是字符串,b这个键的兼职是数字,c这个键的键值是列表,d这个键的键值是元组
第三行,输出整个字典,看,它长得是不是和我们创建时一模一样,
第四行,利用type函数检查d这个变量的数据类型,输出时dict,没错,dict就表示字典了,像list表示列表一样
第五行,值输出了字典里面a这个键的键值
第六行,输出c这个键值里面的第二个元素,c的键值是list类型,所以我们可以像操作列表那样操作d['c']
第七航,与第六行类似,只不过键值类型换成的元祖
0x02:修改字典
在创建字典时,我们为每一个键都指明了键值,如果后面我们想要修改这个键的键值怎么办呢?也很简单,只需要对这个键重新赋值就可以了,如下:
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的键值
0x03:字典的删除
如果我们在创建完成一个字典后,想要删除字典里面的某个键,或者是整个字典,这时我们可以用 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', ''))
print(d.pop('e', '这个键不存在,无法删除'))
输入结果如下:
我是a
我是a
这个键不存在,无法删除
第三行输出a键的值
第四行删除a键,并返回a键的值,因为这个键是存在于字典中的,所以不会返回后面的‘123456’
第五行删除e键,而这个键不存在与字典中,所以返回后面的错误信息‘这个键不存在,无法删除’
0x04:字典的清空
有些时候,我们想要删除的不是整个字典,而只是字典里面的内容呢,这个时候,我们可以使用字典的clear方法,来对字典进行一个清空,操作如下
d = {'a': '我是a', 'b': 1, 'c': [1, 2, 3], 'd': (1, 2, 3)}
d.clear()
print(d)
输出如下:
{}
可以看出,此时d已经成为了一个空字典
0x05:.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 方法访问,返回设置好的错误信息,程序继续向下运行,第四行普通方法访问,程序报错、终止
0x06:in 操作符
在字典中,我们可以利用 in 操作符判断键是否存在于字典中,如果键在字典 dict 里返回 true,否则返回 false。看下面简单代码
d = {'a': '我是a', 'b': , 'c': [, , ], 'd': (, , )}
print('a' in d)
print('e' in d)
输出结果如下:
True
False
第四行,‘a’这个键在字典中,返回True,第五行,‘’e这个键不在字典中,返回false
0x07:获取字典中键值对
现在我们已经知道,字典是以键值对(键和它对应的键值)的形式存储数据的,那么有没有什么方法让我们一次性获取一个字典中所有的键值对呢?可以用items()方法
字典的 items() 方法以列表返回可遍历的(键, 值) 元组数组。意思就是返回一个列表,列表里面的每个元素都是元组,一个元祖就是字典里面的一对键值对。
d = {'a': '我是a', 'b': , 'c': [, , ], 'd': (, , )}
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()方法帮助我们遍历一个字典,每次输出一个键和它对应的键值。
0x08:获取键
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
第三行的返回结果中,只有键,第四行把返回结果转换成了列表,第五行对这个列表进行输出,第六行输出列表中党的第二个元素,也就是字典的第二个键
0x09:获取值
既然能值获取到字典中的键,当然也能只获取字典中的字。就是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)]
1
与keys方法类似,只不过返回结果是字典中所有的键值而已。
python字典基本操作的更多相关文章
- Python 字典(Dictionary) 基本操作
Python字典是一种可变容器模型,可存储任意类型对象:如字符串.数字.元组等.它以键值对(key-value)的形式存在,因此相当于Hashmap在python中的实现. §1. 创建字典 字典由 ...
- Python字典和集合
Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...
- python 字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- python字典中的元素类型
python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...
- python字典copy()方法
python 字典的copy()方法表面看就是深copy啊,明显独立 d = {'a':1, 'b':2} c = d.copy() print('d=%s c=%s' % (d, c)) Code1 ...
- python 字典实现类似c的switch case
#python 字典实现类似c的switch def print_hi(): print('hi') def print_hello(): print('hello') def print_goodb ...
- python字典的常用操作方法
Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...
- Python 字典(Dictionary)操作详解
Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...
- Python 字典(Dictionary) get()方法
描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法: dict.get(key, default=None) 参数 ...
随机推荐
- luoguP4248 [AHOI2013]差异
题意 考虑式子前面那段其实是\((n-1)*\frac{n*(n+1)}{2}\),因为每个后缀出现了\(n-1\)次,后缀总长为\(\frac{n*(n+1)}{2}\). 现在考虑后面怎么求: \ ...
- vue.js操作元素属性
vue动态操作div的class 看代码: <!doctype html> <html lang="en"> <head> <meta c ...
- 一种单机支持 JavaWeb 容器万级并发的设想
当前的大部分 Java web 容器基于 Bio 线程模型,例如常见的 tomcat ,默认 200 线程,即 200 连接.由此带来的问题是,如果想提高并发,或者提高资源利用率,就得加大线程数. 如 ...
- 如何在Ubuntu的idea上运行Hadoop程序
如何在Ubuntu的idea上运行Hadoop程序 一.前言 在idea上运行Hadoop程序,需要使用Hadoop的相关库,Ubuntu为Hadoop的运行提供了良好的支持. 二.操作方法 首先我们 ...
- 队列和 BFS —— 栈和 DFS
队列和 BFS: 广度优先搜索(BFS)的一个常见应用是找出从根结点到目标结点的最短路径. 示例 这里我们提供一个示例来说明如何使用 BFS 来找出根结点 A 和目标结点 G 之间的最短路径. 洞悉 ...
- LeetCode 394:字符串解码 Decode String
题目: 给定一个经过编码的字符串,返回它解码后的字符串. Given an encoded string, return its decoded string. 编码规则为: k[encoded_st ...
- [LeetCode#180]Consecutive Numbers
Write a SQL query to find all numbers that appear at least three times consecutively. +----+-----+ | ...
- 『CSP2019初赛后的总结』
初赛已经过去了,分数大概也已经知道了,接下来的一个月停课应该就是全部准备复赛. 联赛前几次讲课的内容是组合计数,计数\(dp\),字符串,概率期望,数论,数据结构,多数知识点难度都是大于联赛难度的,不 ...
- 如何通过调优攻破 MySQL 数据库性能瓶颈?
一.前言 MySQL调优对于很多程序员而言,都是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰.在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优 ...
- pyqt5学习
详细设计追函数报告生成 界面大致如下: 部分UI代码: #!/usr/bin/env python3.7 # -*- coding:utf-8 -*- # Author: Lancer 2019-09 ...