第4天,python你今天学了吗?
今天学习的是python中唯一内建的映射类型----字典
1,字典的特性:
键要求不可变对象(数字,字符串,元组),不能用列表,且不能重复,value为任何对象均可
2,创建字典:
方法一:d={'key1':'value1','key2':value2''}
方法二:d=dict(a=1,a=2)
>>> d1=dict(a=1,b=2,c=3,d=4)
>>> d1
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
3,字典不是序列,但字典有顺序排列(先后),字典不能通过索引切片,但是通过键d[key]查询,而且可以通过查询新建或修改
>>> d1['a']
1
>>> d1['a']=111 #查询修改key为a的value值
>>> d1
{'a': 111, 'b': 2, 'c': 3, 'd': 4}
>>> d1['e']=5 #查询新增key为e:5值
>>> d1
{'a': 111, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
以上修改不会改变字典的地址
4,常用操作
读取值:方法一:get(key,默认返回值)输出key对应的value值,没有时返回默认值
方法二:setdefault(key,defeaut=none)输出key对应的value值,没有时默认插入新增
两种方法的区别在于第2种有插入新增的功能
>>> r=d1.get('a')
>>> print(r)
None
>>> d1.get('a','1')
'1'
>>> d1
{'b': 2, 'c': 3, 'd': 4, 'e': 5}
>>> d1.setdefault('a',1)
1
增加键值对:update()>>> d2=dict(ss=11,tt=22)
>>> d1.update(d2)
>>> d1
{'b': 2, 'c': 3, 'd': 4, 'e': 5, 'a': 1, 'ss': 11, 'tt': 22}
>>> d1.update(gg=22)
>>> d1
{'b': 2, 'c': 3, 'd': 4, 'e': 5, 'a': 1, 'ss': 11, 'tt': 22, 'gg': 22}
删除键值对pop(),popitem(),clear(),del>>> d1.pop('b')
2
>>> d1
{'c': 3, 'd': 4, 'e': 5, 'a': 1, 'ss': 11, 'tt': 22, 'gg': 22}
>>> d1.popitem()
('gg', 22)
>>> d1.popitem()
('tt', 22)
>>> d1
{'c': 3, 'd': 4, 'e': 5, 'a': 1, 'ss': 11}
>>> d1.clear()
>>> d1
{}
>>> d1= {'b': 2, 'c': 3, 'd': 4, 'e': 5, 'a': 1}
>>> del d1['a']
>>> d1
{'b': 2, 'c': 3, 'd': 4, 'e': 5}
5,其他方法
items:以列表返回键值元组数组>>> d2.items()
dict_items([('c', 3), ('d', 4), ('e', 5), ('a', 1), ('ss', 11)]
keys()以列表返回所有键值>>> d2.keys()
dict_keys(['c', 'd', 'e', 'a', 'ss'])
values()以列表返回所有值>>> d2.values()
dict_values([3, 4, 5, 1, 11])
len()查询有几个键值对>>> len(d1)
5
key in dict只能判断key是否在字典中>>> 'a' in d1
True
copy()将字典复制给另一个变量>>> s2=d2.copy()
>>> s2==d2
True