Python 字典(dict)

基本定义

字典: 字典(dict)是一种可变无序的集合,以键值对作为基本的元素,用大括号“{}”表示开始和结束,元素之间以逗号隔开。字典是一种典型的一对一的映射关系的数据类型;
键值对: 由键(key)以及值(value)组成,中间以冒号“:”隔开;

d1 = {1:'1',2:'2',3:'3'}
d2 = dict()			#空字典
d3 = {}				#空字典

字典中的键的唯一的,如果出现两个同样的键的时候,后一个会替换掉前一个;
字典的值不是唯一的;
字典的值可以是任何数据类型,但是字典的键必须是不可变的数据类型(如:数字,字符串,元组等)
字典在使用的过程中,不允许对字典的键进行直接的修改;

增加字典元素

1.赋值语句增加元素
d = {1:"Apple",2:"Pear",3:"Orange"}
d[0] = "Banana"			#键在字典中不存在,新增键值对;
d[1] = "Lemon"			#键在字典中已经存在,修改原有键对应的值;
print(d)

结果如下:

{1:'Lemon',2:'Pear',3:'Orange',0:'Banana'}
2.setdafault()方法
d = {1:"Apple",2:"Pear",3:"Orange"}
d.setdefault(0,'banana')		#键在字典中不存在,新增键值对;
d.setdefault(1,"Lemon")			#键在字典中已经存在,返回原字典的键对应的值;
print(d)

结果如下:

{1:'Apple',2:'Pear',3:'Orange',0:'Banana'}

setdefault()方法增加字典元素时,如果增加的键在字典中已经存在,不会修改字典中原有的键值;

字典值查询

1字典名+key查找(下标查找)
d={1:"Apple",2:"Pear",3:"Orange",0:"Banana"}
print(d[1])			## 当指定的键不存在是,报错;
print(d[0])

结果如下:

'Apple'
'Banana'
get()方法
d={1:"Apple",2:"Pear",3:"Orange",0:"Banana"}
print(d.get(1,"查找的键不存在"))	#键存在时返回对应的值;
print(d.get(5,"查找的键不存在"))	#键不存在时返回指定的值,默认是None;

结果如下:

'Apple'
'查找的键不存在'

字典值修改

1.赋值修改(见“赋值语句增加元素”)
2.update()方法修改对应的值
d1={1:'Mary',2:'Bob',3:'Mike'}
d2={3:'Jack',4:'John'}
d1.update(d2)				#d2的键在d1中存在时,修改对应的值,不存在是,新增键值对;
print(d1)
d1.update({5:'Cindy'})		#新增键值对;
print(d1)

结果如下:

{1: 'Mary', 2: 'Bob', 3: 'Jack', 4: 'John'}
{1: 'Mary', 2: 'Bob', 3: 'Jack', 4: 'John', 5: 'Cindy'}

字典元素删除

1.del函数
d1 = {1: 'Mary', 2: 'Bob', 3: 'Jack', 4: 'John', 5: 'Cindy'}
del(d1[1])				#删除字典中键为1的键值对,键不存在是报错;
print(d1)
del(d1)					#删除整个字典,删除后d1不存在
print(d1)

结果如下:

{2: 'Bob', 3: 'Jack', 4: 'John', 5: 'Cindy'}	#d1[1]已经被删除
raceback (most recent call last):				#d1对象已经被删除,d1未定义
  File "<pyshell#65>", line 1, in <module>
    d1
NameError: name 'd1' is not defined
2.pop()方法

pop()方法删除指定的键对应的元素;

d1 = {1: 'Mary', 2: 'Bob', 3: 'Jack', 4: 'John', 5: 'Cindy'}
name = d1.pop(2"删除元素不存在")			#删除键存在时,返回对应的值
print(d1, ' + ', name)
name = d1.pop(10, "删除元素不存在")		#删除键不存在时,返回指定值,不指定时,报错;
print(d1, ' + ', name)

结果如下:

{1: 'Mary', 3: 'Jack', 4: 'John', 5: 'Cindy'}  +  Bob
{1: 'Mary', 3: 'Jack', 4: 'John', 5: 'Cindy'}  +  删除元素不存在
3.popitem()方法

popitem()方法随机返回字典的一个键值对对应的元组,并且删除字典中的对应元素,空字典调用popitem()方法会报错;

d1 = {1: 'Mary', 2: 'Bob', 3: 'Jack', 4: 'John', 5: 'Cindy'}
print(d1.popitem())			#返回值是一个元组;
print(d1)

结果如下:

(5, 'Cindy')
{1: 'Mary', 2: 'Bob', 3: 'Jack', 4: 'John'}
4.clear()

clear()方法清空字典;

d1 = {1: 'Mary', 2: 'Bob', 3: 'Jack', 4: 'John', 5: 'Cindy'}
d1.clear()
print(len(d1))
print(d1)

结果如下:

0
{}

字典遍历操作

1.items()方法遍历所有键值对
d1 = {1: 'Mary', 2: 'Bob', 3: 'Jack', 4: 'John', 5: 'Cindy'}
for i in d1.items():
	print(i)			#i的数据类型是元组
print(d1.items())		
print(type(d1.items()))	#d1.items()是一个函数或者方法

结果如下:

(1, 'Mary')
(2, 'Bob')
(3, 'Jack')
(4, 'John')
(5, 'Cindy')
dict_items([(1, 'Mary'), (2, 'Bob'), (3, 'Jack'), (4, 'John'), (5, 'Cindy')])
<class 'builtin_function_or_method'>
2.遍历字典的所有键

通过字典变量直接遍历或者通过keys()方法获取字典键值然后遍历;

d1 = {1: 'Mary', 2: 'Bob', 3: 'Jack', 4: 'John', 5: 'Cindy'}
print("通过字典遍历直接遍历:")
for i in d1:
	print(i)
print("通过keys方法字典键值进行遍历:")
for i d1.keys():
	print(i)

结果如下:

通过字典遍历直接遍历:
1
2
3
4
5
通过keys方法字典键值进行遍历:
1
2
3
4
5
3.遍历字典所有的值

通过遍历获取字典的键,然后通过字典的键来访问字典的值;

d1 = {1: 'Mary', 2: 'Bob', 3: 'Jack', 4: 'John', 5: 'Cindy'}
print("通过字典遍历直接遍历:")
for i in d1:
	print(d1[i])				#下标访问字典的值
print("通过keys方法字典键值进行遍历:")
for i in d1.keys():
	print(d1.setdefault(i))		#通过setdefault()方法访问字典中存在的键对应的值

结果如下:

通过字典遍历直接遍历:
Mary
Bob
Jack
John
Cindy
通过keys方法字典键值进行遍历:
Mary
Bob
Jack
John
Cindy

通过value()方法直接遍历字典的值;

d1 = {1: 'Mary', 2: 'Bob', 3: 'Jack', 4: 'John', 5: 'Cindy'}
print("通过values()方法直接遍历:")
for i in d1.values():
	print(i)				#下标访问字典的值

结果如下:

通过values()方法直接遍历:
Mary
Bob
Jack
John
Cindy

字典其他的函数和方法

内置函数

函数描述
cmp(dict1,dict2)比较两个字典对象(python3.0没有这个函数)
len()返回字典长度
str()字典转换成字符串
type()返回变量类型

操作方法

方法描述
d.clear()清空字典元素
d.copy()字典复制(浅复制)
d.fromkeys(seq,val)生成以seq中的元素为键,值为val的字典(如果seq为字符串,那么生成的字典键为字符串的单个字符)
d.get(key)返回指定键对应的值(不存在是返回空)
d.has_key(key)判断指定键是否在字典内,在返回True,否则返回False
d.items()以列表的形式返回字典中所有的键值对元组
d.keys()返回字典所有的键
d.setdefault(key,value)查找指点键对应的值,如果键不存在,新增键值对;
d.pop(x[,d])抛出并删除字典元素,键值不存在时,如果指定d,则返回d,否则报错
d.popitem()随机抛出键值对元组,并且删除字典中的对应元素;
d. value()返回字典中所有的值
d.update(d1)根据d1更新字典d,把d1中独有的键值对新增到d中,共有的修改为d1的值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值