python学习_7——字典dict

本文详细介绍了Python字典的基本概念,包括字典的非序列特性、键值对存储方式及键的不可变性。讨论了字典的创建、基本操作如添加、修改和删除元素,以及字典与其他容器(如列表)的区别。还提到了字典的迭代访问和相关函数,强调了字典在存储和查找速度上的优势。

字典 dict:

1)字典介绍

字典是一个非序列容器
1.字典是一种可变的容器,可以存储任意类型的数据
2.字典中的每个数据都是用“键”key进行索引,而不是想序列(str,list,tuple)可以用整数下标进行索引
3.字典的数据没有先后的顺序关系,字典的存储是无序的
4.字典中数据以键"key"-值"value"对的形式进行存储
5.字典的key不可以重复,且只能用不可变的类型作为字典的键

2)字典的创建方式

1.创建字典的字面值方式:
字典的表示方式以“{ }”括起来,以冒号“:”分割键值对,各键值对之间用逗号隔开。
示例:
创建空字典:

d = {}

创建非空字典:

d = {"name":"Guisam","age":21,2:"two",3:[1,3]} 

注:字典的键必须为不可变类型的值

2.创建字典的构造函数:

dict()			#生成一个空的字典 等同于{}
dict(iterable)	#用可迭代对象创建,但可迭代对象每个数据项必须拥有一对数据
dict(**kwargs)	#关键字传参形式生成一个字典
dict(mapping)	#通过mapping对象的key,value部分数据创建dict

示例:

 itera = ([1,2],[2,4],'AB')
 d = dict(itera)	 		#d = {1: 2, 2: 4, 'A': 'B'}
 d = dict(a = 1,n = '2')	#d = {'a': 1, 'n': '2'}
 #注意前面的key:a和n不能加引号'',此处为关键字传参,前面为变量名即key,后面为值

#用此方法无法创建key为整数型类型之类的字典,因为无法把一个常数作为一个变量名
eg:无法用此方法创建 d = {1:2},因为如果key要为“2”,用此方法则为d = { 1 = 2 } ,但字面值不能作为一个赋值运算的左侧

3.字典推导式;
字典推导式是用可迭代对象来创建字典的表达式

语法:

{键表达式:值表达式 for 变量 in 可迭代对象 [if 真值表达式]}
注:[]的内容可以省略

示例;
生成一个字典:键的值为0~9,值为键的平方

d = { x : x**2 for x in range(0,10)}
#d = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

字典推导式的嵌套:
语法同列表推导式嵌套

在前面我们讲元组时说了元组时不可变数据类型,而list和dict字典时可变的数据类型,那么关于python的可变数据类型有哪些的?
其实python自带的可变类型只有有四种:
list()/列表,dict()/字典,set()/集合,bytarray()/字节数组
注:除上四种其他均为不可变的数据类型,上面这四种类型永远不能作为字典的键

3)字典的基本操作:

1.字典的键索引
语法:
字典[键]
作用:
用键获取字典的键对应的值
示例:

d = {"name":"myname","age":15}
print(d[name])		#结果为:"myname"

2.添加和修改字典的元素:
添加字典元素
语法

字典[key] = value
说明:
键不存在时,创建键,并让键绑定对应的值
键存在是,修改键绑定的值为value
示例:

d = {}
d["name"] = "myname"	#添加一个键值对
d["age"] = 17			#添加一个键值对
d["age"] += 1			#修改key对应的值

删除字典元素:
del 语句
语法:
del 字典[key]
示例:

d = dict(name = "myname",age = 12)
del d['age']
print d		#d = {"name":"myname"}

3.字典的键判断 in ,not in运算符
可以用 in 运算符判断一个键是否在字典中,如果存在返回True,否则返回False
not in 返回值与 in 相反
只能对key进行判断,无法判断value
字典的 in 与 not in运算要快于列表中的in ,not in运算

示例:

d = dict(name = "myname",age = 12)
"name" in d	#True
12 in d		#False
"age" not in d	#False

4.字典的迭代访问
字典是可迭代对象,字典只能对键进行迭代访问

示例:

d = {0:“零”,2:“贰”,3:“叁”,8:“捌”}
for n in d:
	print(n)	#0,2,3,8
	print(d[n])	#“零”,“贰”,“叁”,“捌”

注意:字典之间不支持 + * 比较等运算

5.可以用于字典的函数:(注意与该方法在list和tuple里对于字典的区别)

函数作用
len(x)返回字典的键值对的个数
max(x)返回字典的键的最大值,要求所有的键值之间必须可以比较
min(x)返回字典的键的最小值,其余同max
sum(x)返回字典的所有键的和,要求所有的键值之间必须可以求和
any(x)真值测试,只对键进行测试,只要一个键为真值,则返回True
all(x)所有键为真值则返回True

6.字典的方法:

方法作用
D.clear()清空字典
D.pop(key)移除键,同时返回此键所对应的值
D.copy()返回字典D的副本,只复制一层(浅拷贝)
D.update(D2)将字典 D2 合并到D中,如果键相同,则此键的值取D2的值作为新值
D.get(key, default=None)返回键key所对应的值,如果没有此键,则返回default
D.keys()返回可迭代的 dict_keys 集合对象
D.values()返回可迭代的 dict_values 值对象
D.items()返回可迭代的 dict_items 对象

注:如果使用d[key]去获取相应的value时,如果此key不存在则会报错,所以可以用get()方法

示例:

#1.已知有如下字符串列表:
L = ['DAD','DA','FAFA']
#生成字典:d = {'DAD':3,'DA':2,'FAFA':4}
d = { x:len(x) for x in L}
#2.
Nos = [1001,1002,1005,1006]
names = ["Tom","Hers","Kada","UZI"]
#试生成字典:d = {1001: 'Tom', 1002: 'Hers', 1005: 'Kada', 1006: 'UZI'}
for i in range(0,4):						#方法1
	d[Nos[i]] = names[i]
d = {Nos[i]:names[i] for i in range(0,4)}	#方法2
4)字典 VS 列表

1.都是可变的容器
2.索引方式不同,列表用整数索引,字典用键索引
3.列表的存储是有序的,字典的存储是无序的
4.字典的插入,删除,修改的速度可能会快于列表(重要)
5.字典的内部实现:hash表或者红黑树;列表的内部实现:动态数组

下一篇:python学习_8——集合set与固定集合frozenset

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值