|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、字典和字符串等的区别
字典是映射类型,不是序列类型
字符串/元组/列表都是序列类型
用中括号标识的是列表
用小括号或者逗号标识的是元组
用大括号表示的是字典
二、字典的组成:
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'} |
|