一、字典和字符串等的区别
字典是映射类型,不是序列类型
字符串/元组/列表都是序列类型
用中括号标识的是列表
用小括号或者逗号标识的是元组
用大括号表示的是字典
二、字典的组成:
1、字典由多个键和对应的值组成
2、通过键可以访问对应的值
三、常用的创建字典的方法
1、dict1 = {'1':'11','2':'22','3':'33','4':'44'}
2、通过dict()工厂函数来创建,调用则生成一个字典的实例
dict3 = dict(传入一一对应的元组或者列表)
dict3 = dict((('1','11'),('2','22')))
dict4 = dict((['1','11'],['2','22']))
3、通过关键字key == value来创建
dict5 = dict(a = 'aa',b = 'bb')
4、直接给字典里面的键赋值
如果是原本存在的则会进行修改:dict['1'] ='111'
如果是原本不存在的则会新增:dict['3']='333'
四、内建方法:
fromkeys(...):通过fromkeys去创建并返回一个新的字典,不能使用fromkeys方法去修改
两个参数:S-->字典的键值;V-->对于的值,不提供则默认为none
dict6 = {} dict6 = dict6.fromkeys((1,2,3)) print(dict6) dict6 = dict6.fromkeys((1,2,3),'value') print(dict6){1: None, 2: None, 3: None}
{1: 'value', 2: 'value', 3: 'value'}
dict6 = dict6.fromkeys((1,2,3),('value1','value2','value3'))
不能分别给每一个key赋不同的值,使用fromkey方法来创建的所有key都是相同的值
{1: ('value1', 'value2', 'value3'), 2: ('value1', 'value2', 'value3'), 3: ('value1', 'value2', 'value3')}
2、访问字典的方法:(keys(),values(),items())
keys():返回字典键的引用
dict1 = dict.fromkeys(range(3),'ok') print(dict1) for eachkey in dict1.keys(): print(eachkey) for eachValue in dict1.values(): print(eachValue) for eachItem in dict1.items(): print(eachItem){0: 'ok', 1: 'ok', 2: 'ok'}
0
1
2
ok
ok
ok
(0, 'ok')
(1, 'ok')
(2, 'ok')
3、使用get()方法可以更加友好的处理越界信息
print(dict1.get(3))
None
print(dict1[3])
KeyError: 3
4、通过成员资格操作符来判断一个键是否在字典中
in
not in
print(2 in dict1) print(3 in dict1)True
False
在字典中检查键的成员资格比序列更高效,当数据比较多时,两者的差距相当明显
在字典中检查的是键而不是值,而序列中查找的是元素的值而不是元素的索引号
5、清空字典则使用clear()方法:
dict1.clear()
就清空了
a = {'姓名':'小甲鱼'} b = a a.clear() print(a) print(b){}
{}
使用dict1 = { }不能完全清空
a = {'姓名':'小甲鱼'} b = a a = {} print(a) print(b){}
{'姓名': '小甲鱼'}---B仍能访问,不够安全
6、copy()圈拷贝字典
赋值和全拷贝的区别:
a = {1:'one',2:'two',3:'three'} b = a.copy()#双胞胎,不同的卵子 c = a#双胞胎,同一个卵子 print(a,id(a)) print(b,id(b)) print(c,id(c))如果a修改则c也会跟着修改,c修改则a也会修改,但是b不会受到干扰
{1: 'one', 2: 'two', 3: 'three'} 39270664
{1: 'one', 2: 'two', 3: 'three'} 39270792
{1: 'one', 2: 'two', 3: 'three'} 39270664
7、pop()和popitem()的区别
字典是无序的
pop删除指定的key和value
a = {1:'one',2:'two',3:'three'} a.pop(2) print(a){1: 'one', 3: 'three'}
popitem随机删除key和value
a = {1:'one',2:'two',3:'three'} a.popitem() print(a){2: 'two', 3: 'three'}
8、setdefault()
a = {1:'one',2:'two',3:'three'} a.setdefault(4) print(a){1: 'one', 2: 'two', 3: 'three', 4: None}
a = {1:'one',2:'two',3:'three'} a.setdefault(5,'hha') print(a){1: 'one', 2: 'two', 3: 'three', 5: 'hha'}
9、update()利用字典或者映射关系去更新另一个字典
a = {1:'11'} b = {2:'22'} a.update(b) print(a) print(b)
{1: '11', 2: '22'}
{2: '22'}