python 之字典

一、字典和字符串等的区别

字典是映射类型,不是序列类型

字符串/元组/列表都是序列类型

用中括号标识的是列表

用小括号或者逗号标识的是元组

用大括号表示的是字典

二、字典的组成:

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'}









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值