一篇文章带你了解python字典基础
作者:wakeyo_J 发布时间:2021-05-02 23:08:23
目录
1. 字典基础知识
字典的基本格式表示
字典的键、值设置要求
1)键的设置要求
2)值的设置要求
2. 字典元素增加
1.利用赋值给字典增加元素
2.利用setdefault()方法给字典增加元素
3. 字典值查找
1.字典名+[key]查找
2.利用get()方法查找
4. 字典值修改
1.利用赋值修改键对应的值
2.利用update()方法修改键对应的值
5. 字典元素删除
1.利用del函数删除
2.利用pop()方法删除
3.利用popitem()方法删除
6. 字典遍历操作
1.遍历所有键值对:
遍历所有键
遍历所有值
7. 字典其他操作方法
1.in成员操作
2.clear()方法
3.copy()方法
4.fromkeys()方法
总结
1. 字典基础知识
字典:是可变的无序集合,以键值对为基本元素可以存储各种数据类型的集合,用大括号({})表示字典的开始和结束,元素之间用半角逗号(,)分隔。键值对,由键(key)和值(value)组成,中间用冒号(:)分隔。如:“wky”:28。字典属于典型的一对一的映射关系的数据类型。
字典可以理解为“映射”,映射是一种键(索引)和值(数据)的对应
字典的基本格式表示
>>> #空字典
>>> {}
{}
>>> #定义一个元素的字典变量
>>> d1 = {"wky":28}
>>> len(d1)
1
>>> d2 = {"wky":1,"lyj":2}
>>> len(d2)
2
>>>
字典的键、值设置要求
1)键的设置要求
(1)唯一性:一个字典对象里所有的键必须是唯一的。
>>> d3={1:"wky",2:"lyj",2:"lyj"}
>>> len(d3)
2
>>> d3={1:"wky",2:"lyj",2:"wa"}
>>> len(d3)
2
在定义字典变量时,python允许输入重复的元素,但是在调用时,python只会保留最后一个键相同的元素。为了避免出现问题,在定义字典对象时,应该养成严格定义每个元素键并保证键的唯一性的良好习惯。
(2)不可变性,字典在使用过程中不能对元素的键进行直接修改。
>>> d2={"wkys":1,"lyj":2} #wky错误写成wkys
2)值的设置要求
2. 字典元素增加
1.利用赋值给字典增加元素
>>> d2 = {"wky":1,"lyj":2}
>>> d2["wa"]=3
>>> d2
{'wky': 1, 'lyj': 2, 'wa': 3}
>>>
上述增加元素的前提是:要求字典里没有新增的键,否则会修改指定键的值。
列表变量带中括号与字典变量带中括号之间的区别:
(1)列表:L[x]=value的方法,修改对应的元素,x为指定的下标
(2)字典:D[x]=value的方法,为字典增加新元素,k为指定的键,且k在字典对象中不存在。
2.利用setdefault()方法给字典增加元素
setdefault()使用格式为D.setdefault(k[,d])。D代表字典对象,k代表新增键,d代表新增键对应的值(若不提供值,则默认值为None)
>>> d1={"wky":1,"lyj":2}
>>> d1.setdefault("wa",10)
10
>>> d1
{'wky': 1, 'lyj': 2, 'wa': 10}
>>> d1.setdefault('wake')
>>> d1
{'wky': 1, 'lyj': 2, 'wa': 10, 'wake': None}
>>>
用setdefault()方法新增键值对时,若指定键已经存在,则只显示已经存在键的值。
3. 字典值查找
1.字典名+[key]查找
>>> d2={'wky': 1, 'lyj': 2, 'wa': 10, 'wake': None}
>>> d2["lyj"]
2
若指定的键在字典对象中不存在会报错。
>>> d2={'wky': 1, 'lyj': 2, 'wa': 10, 'wake': None}
>>> d2['w']
Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
d2['w']
KeyError: 'w' #提示键出错
2.利用get()方法查找
get()方法使用格式D.get(k[,d]),D代表字典对象,k为指定的键,d为键对应的值。
>>> d2={'wky': 1, 'lyj': 2, 'wa': 10, 'wake': None}
>>> d2.get("wky")
1
>>> #查找字典中不存在的键
>>> d2.get('w')
>>>
get()方法指定的键在字典中不存在时返回空值。
4. 字典值修改
1.利用赋值修改键对应的值
>>> d2={'wky': 1, 'lyj': 2, 'wa': 10, 'wake': None}
>>> d2["wake"]=99
>>> d2
{'wky': 1, 'lyj': 2, 'wa': 10, 'wake': 99}
>>>
2.利用update()方法修改键对应的值
update()方法的使用格式D.update(d1),D代表要更新的字典对象,d1为提供更新内容的字典。若d1中提供的键在D中,则更新D里对应的键值,若不存在,则增加键值对。
1)更新字典里键对应的值
>>> d1={'wky': 1, 'lyj': 2, 'wa': 10, 'wake': None}
>>> d2={"wky":10,"wake":89}
>>> d1.update(d2)
>>> d1
{'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
2)新增键值对
>>> d1={'wky': 1, 'lyj': 2, 'wa': 10, 'wake': None}
>>> d1.update({"wakeyo":100})
>>> d1
{'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89, 'wakeyo': 100}
5. 字典元素删除
1.利用del函数删除
>>> d1={'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89, 'wakeyo': 100}
>>> del(d1["wakeyo"])
>>> d1
{'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>>
2.利用pop()方法删除
pop()方法使用格式D.pop(k[,d]),D代表字典,k代表需要删除的元素的键,d为键对应的值(可选)。
>>> d1={'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>> pl=d1.pop('wake')
>>> pl
89
>>>
3.利用popitem()方法删除
popitem()方法使用格式D.popitme(),D代表字典,随即返回一个键值对元组,并在字典里删除对应的元素。
>>> d1={'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>> k1,v1=d1.popitem()
>>> k1,v1
('wake', 89)
>>> d1
{'wky': 10, 'lyj': 2, 'wa': 10}
>>> t1=d1.popitem()
>>> t1
('wa', 10)
>>> type(t1)
<class 'tuple'>
>>>
del函数、pop()方法、popitem()方法若对不存在的元素进行操作时,都将报错。
6. 字典遍历操作
1.遍历所有键值对:
利用items()方法遍历所有键值对
items()方法使用格式D.items(),D代表字典,以元组形式返回字典的所有元素。
>>> d1={'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>> for get_l in d1.items():
print(get_l)
#结果
('wky', 10)
('lyj', 2)
('wa', 10)
('wake', 89)
>>> d1.items()
dict_items([('wky', 10), ('lyj', 2), ('wa', 10), ('wake', 89)])
>>> type(d1.items)
<class 'builtin_function_or_method'>
>>>
遍历所有键
1)利用字典变量循环遍历
>>> d1={'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>> for gets in d1:
print(gets)
#结果
wky
lyj
wa
wake
2)利用keys()方法获取字典键
>>> d1={'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>> for get_l in d1.keys():
print(get_l)
#结果
wky
lyj
wa
wake
遍历所有值
1)通过键遍历值
>>> d1={'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>> for get_key in d1:
print(d1[get_key])
#结果
10
2
10
89
2)利用values()方法获取字典值
>>> d1={'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>> for get_v in d1.values():
print(get_v)
#结果
10
2
10
89
7. 字典其他操作方法
1.in成员操作
>>> d1={'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>> if "wky" in d1.keys():
print("wky在字典里")
else:
print("wky不在字典里")
wky在字典里
2.clear()方法
>>> d1={'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>> d1.clear()
>>> d1
{}
3.copy()方法
>>> d1={'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>> d2=d1.copy()
>>> d2
{'wky': 10, 'lyj': 2, 'wa': 10, 'wake': 89}
>>> id(d1)
2432414090296
>>> id(d2)
2432414587208
>>> d3=d2
>>> id(d3)
2432414587208
通过copy()方法的复制,可以避免字典变量之间直接赋值指向同一个地址。
4.fromkeys()方法
fromkeys()方法使用格式D.fromkeys(iterable),D代表字典,iterable代表列表对象,用于指定字典键,生成的D的键对应的值默认为None。
>>> d1={}.fromkeys(["wky","lyj","wa"])
>>> d1
{'wky': None, 'lyj': None, 'wa': None}
>>>
来源:https://blog.csdn.net/m0_55697123/article/details/119153240


猜你喜欢
- # 从X和Y中取出相应步长对应的数组并保存至x_data和y_data中x_data = []y_data = []for i in ran
- 百度语音对上传的语音要求目前必须是单声道,16K采样率,采样深度可以是16位或者8位的PCM编码。其他编码输出的语音识别不出来。语音的处理技
- 配合上一篇文章的联系人应用(https://www.aspxhome.com/article/161160.htm),实现配套的基于node
- 兼容IE6的第一步就是单独对IE进行兼容,你针对IE6所写的代码只影响IE6;有几种方法可以区分开IE6:IE特有条件注释、CSS选择器、J
- 记录微信小程序中使用wxss加载图片并实现动画的方式,最终实现loading效果。代码.weui-loading {margin: 0 5p
- 废话不多说,直接上代码!updateBody = { "query":{ &nb
- PDO::commitPDO::commit提交一个事务(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)说
- 一个出错的例子#coding:utf-8s = u'中文'f = open("test.txt",&qu
- python 不能写new_loss=old_loss=[]这样 两个变量实际上是同一个list要分开写new_loss=[]Old_los
- 一.文件基本操作1.1 文件打开和关闭open(‘文件名称','打开模式')模式:r(只读,指针再头) w(只写,存
- 目标减少资源加载可以明显的优化页面加载的速度,所以可以减少页面载入时立即下载的图片的数量,以提高页面加载速度,其他的图片在需要的时候再进行加
- python 打印对象的所有属性值:def prn_obj(obj): print '\n'.join([
- 最近论坛里总有人问幻灯片怎么从数据库里取数据,花了几分钟简单的写了下。用到的人可以自己在细化<%dim rs,sqlset&
- 前言:在生活中工作中,我们经常使用Excel用于储存数据,Tableau等BI程序处理数据并进行可视化。我们也经常使用R、Python编程进
- 首先需要安装itchat库,可以pip install itchat安装,也可以在pycharm里安装# -*- coding:utf-8
- 本文更多将会介绍三思在日常中经常会用到的,或者虽然很少用到,但是感觉挺有意思的一些函数。分二类介绍,分别是: 著名函数篇-经常用到的函数 非
- 引子Linux下不支持QQ等功能丰富的IM,虽然可以通过wine运行QQ2012,但是还是喜欢在gtalk群中聊天,gtalk群不支持图片方
- python的数据类型有:数字(int)、浮点(float)、字符串(str),列表(list)、元组(tuple)、字典(dict)、集合
- 本文实例为大家分享了python+rsync精确同步指定格式文件的具体代码,供大家参考,具体内容如下# coding: utf-8#!/us
- python的多重继承的理解Python和C++一样,支持多继承。概念虽然容易,但是困难的工作是如果子类调用一个自身没有定义的属性,它是按照