Python中的Dict(字典)
字典(dictionary)是Python中另一个非常有用的内置数据类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。在确保你能正确理解字典,它非常重要,你需要先参考:Python中的条件控制语句
字典是一种映射类型,它的元素是键值对。字典用 { } 包裹,它是一个无序的且包含 键(key) : 值(value) ,不包括空字典。键(key)必须使用不可变类型。每个键值对用 ,分开。在同一个字典中,键(key)必须是唯一的。
创建一个字典有以下几种方式:
dict1={} #创建一个空字典
dict(a='a', b='b', t=1) #通过设置关键字,使用dict函数
{x: x**2 for x in (2, 4, 6)} #构造字典,":"前面值为x,":"后面值为x*2 字典生成式
dict([('baidu', 1), ('Google', 2), ('Taobao', 3)]) #构造字典
dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典
Python字典键的特性
字典是我们以后经常需要使用的类型,所以基础需要打牢固,那么字典键的特性非常重要:
- 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。
- 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。
对应每一条特性,我们以下面的两个代码演示说明:
dict1={'name':'e1yu','name':'zjj','age':18}
print(dict1) #{'name': 'zjj', 'age': 18}
dict1={ ["name"]:"e1yu","url":"e1yu" } #这个实例会直接报错,字典里面的键不能是列表,但是值可以为列表
dict1={ "name":["e1yu","url","e1yu"] }
Python字典内置函数
函数 | 描述 |
---|---|
clear() | 删除字典内所有元素 |
copy() | 返回一个字典的浅复制 |
fromkeys(seq,val) | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
get(key, default=None) | 返回指定键的值,如果值不在字典中返回default值 |
key in dict | 如果键在字典dict里返回true,否则返回false |
items() | 以列表返回可遍历的(键, 值) 元组数组 |
keys() | 返回一个迭代器,可以使用 list() 来转换为列表 |
setdefault(key,default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
update(dict2) | 把字典dict2的键/值对更新到dict里 |
values() | 返回一个迭代器,可以使用 list() 来转换为列表 |
pop(key[,default]) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
popitem() | 随机返回并删除字典中的最后一对键和值。 |
有关字典的一些使用案例
clear()方法很简单不再演示,copy()方法需要重点学习,可参考:深拷贝和浅拷贝详解,我们先来看一下fromkeys()方法,它是dict中的一个方法:
print(dict.fromkeys(['e1yu','zjj','wff'],'最全的教程集合'))
#{'e1yu': '最全的教程集合', 'zjj': '最全的教程集合', 'wff': '最全的教程集合'}
get()dict1=dict( [('www.e1yu.com','最全的教程集合'),('a','a'),('b','b'),('c',1)] ) #创建字典
print(dict1.get('www.e1yu.com')) #获取键为www.e1yu.com的值,如果不存在返回None
print(dict1.get('f'),'不存在f')
如果key不存在,可以返回None,或者自己指定的value。你不要用get来获取值,这样没有意义。
key in dictdict1=dict( [('www.e1yu.com','最全的教程集合'),('a','a'),('b','b'),('c',1)] ) #创建字典
if 'a' in dict1:
print('字典dict1中存在键a')
items()有时候我们呢需要对字典进行循环打印出键和对应的值,通常有下面的两种方式:
dict1=dict( [('www.e1yu.com','最全的教程集合'),('a','a'),('b','b'),('c',1)] ) #创建字典
for k,v in dict1.items(): #键、值
print(k,v)
for i in dict1: #单独打印i的话,就是循环打印字典中的key
print(i,dict1[i]) #通过key,获取value
keys()和values()dict1=dict( [('www.e1yu.com','最全的教程集合'),('a','a'),('b','b'),('c',1)] ) #创建字典
print(list(dict1.keys())) #返回dict1中所有的键,并存入list列表
print(list(dict1.values())) #返回dict1汇总所有的值,并存入list列表
print(type( dict1.keys() ),type(dict1.values()) ) #<class 'dict_keys'> <class 'dict_values'>
pop()和popitem()dict1=dict( [('www.e1yu.com','最全的教程集合'),
('a','a'),('b','b'),('c',1),]) #创建字典
del dict1['a'] #删除
dict1.pop('b') #删除
dict1.popitem() #不带参数为随便删除
print(dict1)
setdefault()dict1=dict( [('www.e1yu.com','最全的教程集合'),
('a','a'),('b','b'),('c',1),]) #创建字典
dict1.setdefault('name','zjjsb') #该方法会从dict里面寻找是否存在,存在就返回原值,不存在就创建后面的值
print(dict1)
update()dict1=dict( [('www.e1yu.com','最全的教程集合'),
('a','a'),('b','b'),('c',1),]) #创建字典
dict2={'name':'zjj','age':18}
dict1.update(dict2) #将dict2字典和dict1字典融合,若字典存在交叉,则更新字典
print(dict1) #{'www.e1yu.com': '最全的教程集合', 'a': 'a', 'b': 'b', 'c': 1, 'name': 'zjj', 'age': 18}
– END –
声明:1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!