python字典

python字典


创建字典

字典是一个映射类型,一个序列可以理解为特殊的映射类型

字典中每一个元素都有一个key值和value值,key值是键值,相当于索引,是唯一的,必须是一个不可变的,也就是除了list、dict、set和内部至少带有上述三种类型之一的tuple之外;value值是对应值,相当于内容,可不唯一,可以是任意类型的。

要创建一个字典只需要用大括号{}将元素括起来,元素间使用逗号,分隔开,每一个元素的key和value间用冒号:连接,表示一种对应关系,要创建一个空字典,只需要使用一对大括号即可,例如

{1:'one',2:'two',3:'three'}
{}
  • 使用dict()函数可以将有对应关系的列表或元组给转换成字典,或者使用关键字参数的形式创建一个字典,但我不推荐这样做,还不如直接创建,例如
dict([[1,'one'],[2,'two'],[3,'three']])
dict(a='one',b='two',c='three')

访问字典

访问字典的方式与访问列表的方式类似,只不过索引变为了key值,例如

dict1 = {'a':'one', 'b':'two', 'c':'three'}
print(dict1['b'])# two

我们可以不仅可以访问字典里的value值,还可以修改它,如果说这个key不存在,就会自动创建一个,虽然可以添加和修改value值,但我们不能直接修改key值,例如

dict1 = {'a':'one', 'b':'two', 'c':'three'}
dict1['c'] = 'three123'
dict1['d'] = 'four'
print(dict1)# {'a': 'one', 'b': 'two', 'c': 'three123', 'd': 'four'}

常用方法

  • fromkeys(S [ , V]):返回一个新字典,key为S中的元素,value全为V的字典,若V缺省,则默认为None,原字典不变,例如

    x = ('key1', 'key2', 'key3')
    y = 0
    print(dict.fromkeys(x,y))# {'key1': 0, 'key2': 0, 'key3': 0}
    
  • keys():返回字典中所有key值的引用组成的序列,常与for搭配

    dict1 = {'a':'one', 'b':'two', 'c':'three'}
    for each in dict1.keys():
        print(each,end=' ')# a b c 
    
  • values():返回value值序列,常与for搭配

    for each in dict1.values():
    	print(each,end=' ')# one two three
    
  • items():返回由元组(key,value)组成的序列,常与for搭配

    for each in dict1.items():
        print(each,end=' ')# ('a', 'one') ('b', 'two') ('c', 'three') 
    
  • get(key, default=None):当我们试图访问一个字典中不存在的key值时,它会报错,为了避免这种情况,我们可以使用get()成员函数来访问字典。如果key存在,就返回该key的value值,否则,返回default值,例如

    dict1 = {'a':'one', 'b':'two', 'c':'three'}
    print(dict1.get('b'))# two
    print(dict1.get('d','你找不到我'))# 你找不到我
    
  • clear():清空字典,没有返回值

  • copy()返回一个对当前字典的深拷贝,但对于里面的引用元素依旧是浅拷贝,举个例子

    dict1 =  {'user':'runoob','num':[1,2,3]}
     
    dict2 = dict1          # 浅拷贝: 引用对象
    dict3 = dict1.copy()   # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
     
    # 修改 data 数据
    dict1['user']='root'
    dict1['num'].pop(1)
     
    # 输出结果
    print(dict1)# {'user': 'root', 'num': [1, 2]}
    print(dict2)# {'user': 'root', 'num': [1, 2]}
    print(dict3)# {'user': 'runoob', 'num': [1, 2]}
    
  • pop(key):弹出字典中指定key值的元素,并返回其value值

  • setdefault(key , value=None):如果给定的key不存在,则会向字典中添加该key,value值为value,否则,返回已有的value值

  • update(dict):使用参数里的dict来更新字典,也就是说,用dict里与字典相同的key值对应value值覆盖掉原字典的value值,如果dict里的key值原字典里没有,则会向原字典中添加该元素,没有返回值,举个例子

    dict1 = {'a':'one', 'b':'two', 'c':'three'}
    dict2 = {'c':'3','d':'4'}
    dict1.update(dict2)
    print(dict1)# {'a': 'one', 'b': 'two', 'c': '3', 'd': '4'}
    

成员操作符in

字典也可以像序列一样使用in和not in,当字典使用in时,查找的是key值,如果key存在,就返回True,否则,返回False,例如

dict1 = {'a':'one', 'b':'two', 'c':'three'}
print('d' in dict1)# False
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值