Python的字典操作
目录前言一、字典定义二、字典的索引1.通过键来索引2.get方法索引3.遍历列表三、字典的方法(1)keys()(2)values()(3)items()(4)get(default=None)(5)setdefault(key,default)(6)pop(key,default=None)(7)popitem()(8)clear()(9)copy()总结Python中我们可以用列表来存储同中类
目录
前言
Python中我们可以用列表来存储同种类型的信息,而当我们需要存储两个关联的信息时,列表就不太合适,此时我们可以用字典来存储,将一种信息当作字典的索引(键),将另一种信息作为字典的内容(值)。例如统计一个班级所有同学的考试分数时,就可以创建一个字典,用名字当作键,分数当作值。下面详细介绍一下Python字典的用法:
一、字典定义
Python中字典是由键(key)和值(value)的组合来构成的,key和value之间用冒号隔开,每个key和value对用逗号隔开,然后再用大括号括起来就组成了一个字典了,如下所示:
>>> dict1={'Tom':93,'Jim':80,'Lily':100} #创建了三个键值对的字典
二、字典的索引
1.通过键来索引
字典通过key的索引方式和列表的索引方式类似,不同的是列表中的方括号的内容是元素的index,而字典索引的方括号内是该item的key,如下所示:
>>> dict1={'Tom':93,'Jim':80,'Lily':100}
>>> dict1['Tom'] #访问键值为'Tom'的Value
93
>>> dict1['Lily'] #访问键值为'Lily'的Value
100
2.get方法索引
另一种访问值的方式是使用字典的get方法dict.get(key,default=None),该方法可以加一个参数default,当访问的key不在字典中的时,就返回default的值,如下所示:
>>> dict1={'Tom':93,'Jim':80,'Lily':100}
>>> dict1.get('Tom') #访问键为'Tom'的值
93
>>> dict1.get('Eric') #访问键为'Eric'的值,键不存在,没有返回信息
>>> dict1.get('Eric',0) #访问键为'Eric'的值,键不存在,返回default值0
0
三、字典的方法
(1)keys()
dict.keys()方法返回字典的所有键组成的一个视图对象,注意不是返回一个列表,该对象不支持下标的索引,如果需要可以用list函数转换为列表,如下所示:
>>> dict1={'Tom':93,'Jim':80,'Lily':100}
>>> dict1.keys() #该方法返回一个视图对象dict_keys
dict_keys(['Tom', 'Jim', 'Lily'])
>>> dict1.keys()[0] #keys方法返回的对象不支持索引,报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'dict_keys' object is not subscriptable
>>> list(dict1.keys()) #用list函数可以将其转换为列表如下
['Tom', 'Jim', 'Lily']
(2)values()
dict.values()方法返回字典的所有值组成的一个视图对象,和keys()返回对象一样不支持下标的索引,但是它们可以用for循环来索引,如下所示:
>>> dict1={'Tom':93,'Jim':80,'Lily':100}
>>> dict1.values() #values()方法返回dict_values的对象,不支持下标索引
dict_values([93, 80, 100])
>>> for i in dict1.values(): #可以用for循环来索引
... print(i)
93
80
100
(3)items()
dict.items()方法返回字典的所有键和值元组组成的集合,也是一个视图对象,可以用for循环来索引,如下所示:
>>> dict1={'Tom':93,'Jim':80,'Lily':100}
>>> dict1.items() #items()方法返回键和值组成元组的一个集合,数据类型为dict_items
dict_items([('Tom', 93), ('Jim', 80), ('Lily', 100)])
>>> for k,v in dict1.items(): #for循环可以索引返回的元组
... print(k)
... print(v)
...
Tom
93
Jim
80
Lily
10
(4)get(default=None)
该方法前面已经介绍过,不再赘述。
(5)setdefault(key,default)
当key已经存在字典中,该方法不会改写该key的value,同时返回该key的value;而当key不在字典中时,该方法会新增一个(key,default)的键值对,同时返回该key的value。举例如下:
>>> dict1={'Tom':93,'Jim':80,'Lily':100}
>>> dict1.setdefault('Tom',0) #'Tom'已存在,不改写,返回该键的值
93
>>> dict1
{'Tom': 93, 'Jim': 80, 'Lily': 100}
>>> dict1.setdefault('Eric',0) #'Eric'已存在,新增该键值对,然后返回它的值
0
>>> dict1 #字典新增了一个键值对
{'Tom': 93, 'Jim': 80, 'Lily': 100, 'Eric': 0}
(6)pop(key,default=None)
pop方法可以将指定的key的键值对从字典中移出,并返回该key的值。当字典中找不到指定的key的时候会有2种情况:(1)没有default参数,会报Key Error (2)给定了Default参数,返回该值。举例如下:
>>> dict1={'Tom':93,'Jim':80,'Lily':100}
>>> dict1.pop('Tom') #字典中移出'Tom':93的键值对,并返回它的Value
93
>>> dict1
{'Jim': 80, 'Lily': 100}
>>> dict1.pop('Eric') #字典找不到key为'Eric',没有指定default值,则抛出Key Error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Eric'
>>> dict1.pop('Eric',0) #字典找不到key为'Eric',但指定default值,则返回该值
0
(7)popitem()
popitem方法会移出字典中最后的键值对并返回内容为该键和值一个元组,当字典为空时,抛出Key Error。整体而言字典的popitem方法和列表的pop方法有点类似,举例如下:
>>> dict1={'Tom':93,'Jim':80,'Lily':100}
>>> dict1.popitem() #移出最后一个键值对并返回
('Lily', 100)
>>> dict1.popitem() #移出最后一个键值对并返回
('Jim', 80)
>>> dict1.popitem() #移出最后一个键值对并返回
('Tom', 93)
>>> dict1.popitem() #此时字典为空,抛出Key Error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'
(8)clear()
clear方法会将字典的全部内容清除,举例如下
>>> dict1={'Tom':93,'Jim':80,'Lily':100}
>>> dict1
{'Tom': 93, 'Jim': 80, 'Lily': 100}
>>> dict1.clear() #清除dict1的所有内容
>>> dict1
{}
(9)copy()
copy方法会返回一个相同内容的复制的字典,注意如果将字典直接用等号赋值到一个变量,Python并不会重新建立一个字典的存储空间,而只是将被赋值的字典的指针同时指向该变量,如下所示:
>>> dict1={'Tom':93,'Jim':80,'Lily':100}
>>> dict2=dict1 #直接等号赋值,dict2和dict1是等价的
>>> dict3=dict1.copy() #用copy方法赋值,dict3是新的字典
>>> dict1.popitem() #dict1改变,同时影响dict2,但不影响dict3
('Lily', 100)
>>> dict1
{'Tom': 93, 'Jim': 80}
>>> dict2
{'Tom': 93, 'Jim': 80}
>>> dict3
{'Tom': 93, 'Jim': 80, 'Lily': 100}
总结
以上就是Python字典的介绍内容,包含了字典的定义,索引和方法。字典是一个强大的工具,通过它我们可以很方便地对关联信息进行存储和处理,如果本文对大家掌握字典能够提供一些帮助,记得收藏点赞哈!
更多推荐
所有评论(0)