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