Python字典dict
字典是许多数据的集合,属于可变序列类型,它是无序的可变序列,其保存的内容是以“键值对”的形式存放的。
Python 中,字典的数据类型为 dict,通过 type() 函数即可查看。
字典类型所具有的主要特征:
(1)通过键而不是通过索引来读取元素。
(2)字典是任意数据类型的无序集合。
(3)字典是可变的,并且可以任意嵌套。
(4)字典中的键必须唯一。
(5)字典中的键必须不可变,因此只能使用数字、字符串或者元组,不能使用列表。
======创建字典======
1.赋值创建
Python 字典类型的语法格式如下:
dictname = {'key':'value1','key2':'value2',...,'keyn':valuen}
其中 dictname 表示字典类型名,keyn : valuen 表示各个元素的键值对。需要注意的是,同一字典中各个元素的键值必须唯一。
示例:
adict = {'a':1,'b':2,'c':3}
print(adict)
bdict = {}
print(bdict)
cdict = {(1,2):'good','bad':[1,2]}
print(cdict)
结果:
{'a': 1, 'b': 2, 'c': 3}
{}
{(1, 2): 'good', 'bad': [1, 2]}
2.通过fromkeys()方法创建
Python 中,还可以使用 dict 字典类型提供的 fromkeys() 方法创建所有键值为空的字典,使用此方法的语法格式为:
dictname = dict.fromkeys(list,value=None)
其中,list 参数表示字典中所有键的列表,value 参数默认为 None,表示所有键对应的值。此种创建方式,通常用于初始化字典,设置 value 的默认值。
示例:
ddict = {"a":1,'b':2}
edict = dict.fromkeys(ddict)
print(edict)
结果:
{'a': None, 'b': None}
3.通过dict()映射函数创建
fdict = dict(a=1,b=2,c=3) #使用此方式创建字典时,字符串不能带引号
print(fdict)
gdict = [['a',1],['b',2]] #向 dict() 函数传入列表或元组,其中元素是包含 2 个元素的列表或元组,其中第一个为键,第二个为值。
print(dict(gdict))
hdict =[(1,2),(3,4),(5,6)]
print(dict(hdict))
idict =((1,2),(3,4),(5,6))
print(dict(idict))
jdict =([1,2],[3,4],[5,6])
print(dict(jdict))
akeys = ['a','b','c'] #通过dict() 函数和 zip() 函数可将前两个列表转换为对应的字典。akeys和avalues还可以是字符串或元组
avalues = [1,2,3]
print(dict(zip(akeys,avalues)))
结果:
{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2}
{1: 2, 3: 4, 5: 6}
{1: 2, 3: 4, 5: 6}
{1: 2, 3: 4, 5: 6}
{'a': 1, 'b': 2, 'c': 3}
注意,无论采用以上哪种方式创建字典,字典中各元素的键都只能是字符串、元组或数字,不能是列表。
====访问字典=====
1.通过键来访问
akeys = ['a','b','c']
avalues = [1,2,3]
adict = dict(zip(akeys,avalues))
print(adict['c'])
结果:
3
2.通过get() 方法获取指定键的值
get() 方法的语法格式为:
dict.get(key[,default])
其中,dict 指的是所创建的字典名称;key 表示指定的键;default 用于指定要查询的键不存在时,此方法返回的默认值,如果不手动指定,会返回 None。
示例:
adict = dict(a=1,b=2,c=3)
print(adict.get('a'))
print(adict.get('d')) #指定的键不存在,会返回None
print(adict.get('e','No this key')) #指定的键不存在,但会返回一个提示信息
结果:
1
None
No this key
=====删除字典=====
和删除列表、元组一样,手动删除字典也可以使用 del 语句。
adict = dict(a=1,b=2,c=3)
del(adict)
print(adict)
结果:
NameError: name 'adict' is not defined
====添加键值对====
如果要为 dict 添加键值对,只需为不存在的 key 赋值即可。实现此操作的语法格式如下:
dictname[key] = value
示例 :
adict = {}
adict['a'] = 1
adict['b'] = 2
adict['c'] = 3
print(adict)
结果:
{'a': 1, 'b': 2, 'c': 3}
=====修改键值对========
“修改键值对”并不是同时修改某一键值对的键和值,而只是修改某一键值对中的值。
由于在字典中,各元素的键必须是唯一的,因此,如果新添加元素的键与已存在元素的键相同,原来键所对应的值就会被新的值替换掉。例如:
adict = dict(a=1,b=2,c=3)
adict['a'] = 111
print(adict)
结果:
{'a': 111, 'b': 2, 'c': 3}
====删除键值对======
如果要删除字典中的键值对,还是可以使用 del 语句。例如:
adict = dict(a=1,b=2,c=3)
del adict['c']
print(adict)
结果:
{'a': 1, 'b': 2}
====判断键值对是否存在======
如果要判断字典中是否存在指定键值对,首先应判断字典中是否有对应的键。判断字典是否包含指定键值对的键,可以使用 in 或 not in 运算符。对于 dict 而言,in 或 not in 运算符都是基于 key 来判断的。
adict = dict(a=1,b=2,c=3)
print('a' in adict)
print('a' not in adict)
结果:
True
False
====键值对操作方法======
1.keys()、values() 和 items()方法
这 3 个方法之所以放在一起介绍,是因为它们都用来获取字典中的特定数据。keys() 方法用于返回字典中的所有键;values() 方法用于返回字典中所有键对应的值;items() 用于返回字典中所有的键值对。
adict = dict(a=1,b=2,c=3)
print(adict.keys())
print(adict.values())
print(adict.items())
结果:
dict_keys(['a', 'b', 'c'])
dict_values([1, 2, 3])
dict_items([('a', 1), ('b', 2), ('c', 3)])
注意:在 Python 2.x 中,这三个方法的返回值是列表类型。但在 Python 3 中,并不是列表和元组类型,因为 Python 3不希望用户直接操作这几个方法的返回值。如果想使用返回的数据,有以下 2 种方法:
(1)使用 list() 函数,将它们返回的数据转换成列表,例如:
adict = dict(a=1,b=2,c=3)
print(list(adict.keys()))
print(list(adict.values()))
print(list(adict.items()))
结果:
['a', 'b', 'c']
[1, 2, 3]
[('a', 1), ('b', 2), ('c', 3)]
(2)利用多重赋值的技巧,利用循环结构将键或值分别赋给不同的变量,例如:
adict = dict(a=1,b=2,c=3)
for i in adict.keys():
print(i,end= ' ')
print()
for j in adict.values():
print(j,end=' ')
print()
for k,v in adict.items():
print("key:%s"% k,"value:%s"% v)
结果:
a b c
1 2 3
key:a value:1
key:b value:2
key:c value:3
2.copy()方法
copy() 方法用于返回一个具有相同键值对的新字典,例如:
adict = dict(a=1,b=2,c=3)
cdict = adict.copy()
print(cdict)
结果:
{'a': 1, 'b': 2, 'c': 3}
注意,copy() 方法所遵循的拷贝原理,既有深拷贝,也有浅拷贝。拿拷贝字典 a 为例,copy() 方法只会对最表层的键值对进行深拷贝,也就是说,它会再申请一块内存用来存放 {'one': 1, 'two': 2, 'three': []};而对于某些列表类型的值来说,此方法对其做的是浅拷贝,也就是说,b 中的 [1,2,3] 的值不是自己独有,而是和 a 共有。
a = {'a':1,'b':2,'c':[1,2,3]}
b = a.copy()
a['a'] = 111
print(a)
print(b)
a['d'] = 4
print(a)
print(b)
a['c'].remove(1)
print(a)
print(b)
结果:
{'a': 111, 'b': 2, 'c': [1, 2, 3]}
{'a': 1, 'b': 2, 'c': [1, 2, 3]}
{'a': 111, 'b': 2, 'c': [1, 2, 3], 'd': 4}
{'a': 1, 'b': 2, 'c': [1, 2, 3]}
{'a': 111, 'b': 2, 'c': [2, 3], 'd': 4}
{'a': 1, 'b': 2, 'c': [2, 3]}
从运行结果不难看出,对 a 增加新键值对,b 不变;而修改 a 某键值对中列表内的元素,b也会相应改变。
3.update()方法
在执行 update() 方法时,如果被更新的字典中己包含对应的键值对,那么原 value 会被覆盖;如果被更新的字典中不包含对应的键值对,则该键值对被添加进去。
a = {'a':1,'b':2,'c':[1,2,3]}
a.update({'a':111,'b':222,'e':444})
print(a)
结果:
{'a': 111, 'b': 222, 'c': [1, 2, 3], 'e': 444}
4.pop()方法
pop() 方法用于获取指定 key 对应的 value,并删除这个键值对。
a = {'a':1,'b':2,'c':[1,2,3]}
a.pop('a')
print(a)
结果:
{'b': 222, 'c': [1, 2, 3]}
5.popitem()方法
popitem() 方法用于随机弹出字典中的一个键值对。
注意,此处的随机其实是假的,它和 list.pop() 方法一样,也是弹出字典中最后一个键值对。但由于字典存储键值对的顺序是不可知的,因此 popitem() 方法总是弹出底层存储的最后一个键值对。
a = {'a':1,'b':2,'c':[1,2,3]}
print(a)
k,v = a.popitem() #将弹出项的key赋值给k、value赋值给v
print(k,v)
结果:
{'a': 1, 'b': 2, 'c': [1, 2, 3]}
c [1, 2, 3]
6.setdefault()方法
setdefault() 方法总能返回指定 key 对应的 value;如果该键值对存在,则直接返回该 key 对应的 value;如果该键值对不存在,则先为该 key 设置默认的 value,然后再返回该 key 对应的 value。
a = {'a':1,'b':2,'c':[1,2,3]}
print(a)
print(a.setdefault('a',444)) #键存在,则不会修改value
print(a.setdefault('e',444)) #键不存在,则新增键值对
print(a)
结果:
{'a': 1, 'b': 2, 'c': [1, 2, 3]}
1
444
{'a': 1, 'b': 2, 'c': [1, 2, 3], 'e': 444}
====使用字典格式化字符串=======
temp = 'name:%(name)s,price:%(price)d,'
book = {'name':'python','price':120}
print(temp % book)
结果:
name:python,price:120
Python字典dict相关推荐
- python字典(dict)+常用方法操作+列表、元组、集合、字典的互相转换
python字典(dict)+常用方法操作+列表.元组.集合.字典的互相转换 字典也是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据. 为了保存具有映射关系的数据,Python ...
- Python 字典 dict() 函数
描述 Python 字典 dict() 函数用于创建一个新的字典,用法与 Pyhon 字典 update() 方法相似. 语法 dict() 函数函数语法: dict(key/value) 参数说明: ...
- Python 字典(dict) clear() 方法
字典(dict)是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据.Python字典可存储任意类型对象,如字符串.数字.元组等,优点是取值方便,速度快.本文主要介绍Python ...
- Python 字典 dict 以及collections里面的defaultdict
Python dict 字典 作用与 java.c语言里的map类似. 可以使用dict方法定义一个字典,也可以使用花括号直接定义. map = {} map = dict() python字典的插入 ...
- [Python]字典dict简介
文章目录 字典dict 字典操作 字典遍历 遍历key 遍历value 同时遍历key与value 操作函数 内置函数 内置方法 字典是一种可变容器,可存储任意类型的键值对. 字典dict pytho ...
- Python字典(dict)详解
文章目录: 一.字典(dict)的概念: 二.字典(dict)的定义: 1.一般格式: 2.空字典: 3.举例: 注意: 三.字典(dict)的一些基本操作: 1.增: 2.删: 3.查: 4.改: ...
- Python 字典dict详解(超详细)
文章目录 Python内置函数/方法详解-字典dict 1.创建字典 1.1 字典键的特性 2.访问字典值 2.1 直接访问 2.2 for循环遍历 2.3 检查键是否存在 2.4 嵌套字典 3.内置 ...
- python字典dict与json数据转换
JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式.现在的接口请求request params和response body,大都是使用json格 ...
- Python字典dict的增删查改及常用操作
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可 ...
最新文章
- Clang:LLVM 的 C 语言家族前端
- php 文件迭代对象,通过PHP中的stdClass对象进行迭代
- 【五校联考3day2】A
- MCtalk对话学霸君:在线教育“1对多小班化”是个伪命题
- java怎么显示qt文件后缀,在qt中执行java文件
- 傅里叶变换公式_理解1维傅里叶变换
- 1218数据库操作工具类的使用
- L1-004. 计算摄氏温度-PAT团体程序设计天梯赛GPLT
- python单词字典排序_python字典排序
- Python单元测试框架——unittest
- 用策略屏蔽135 139 445 3389端口+网络端口安全防护技 .
- 蓝桥杯 题目1 最大最小值(排序)
- pyqt5——QImage与QPixmap
- 开启灯光就是近光吗_自动大灯会自动调远近光吗
- 如何制定有效的项目管理计划?
- html excel 2位小数,excel保留两位小数_excel用公式保留2位小数的方法
- S5PV210 buzzer驱动
- 第一次将所学的指针和递归结合在一起
- 微信小程序的测试方法,抓包,模拟
- 高德地图API实现天气查询