01字典-----创建字典
1.定义:
字典存储一系列的键值对:key;value,即一个key对应着一个value
2.创建字典1:
1.pthon中用{}表示字典,可以使用{}创建一个字典
2.字典中的key和value之间用冒号:分割,元素之间用逗号,分割
3.字典中的key只能为数字,字符串,元组,大多数情况使用字符串作为key
4.value的类型没有限制
3.创建字典2:
①利用dict创建字典
a=dict([[key1,value1],[key2,value2],
②此时key只能为字符串
4.创建字典3:
①利用dict创建字典
key3,value3\]\])a=dict(key1=value1,key2=value2,key3=value3) a=dict(\[(key1,value1),(key2,value2),(key3,value3)\]) a=dict(((key1,value1),(key2,value2),(key3,value3)))
②可以传入一个列表或者元组,每一个元素也是包含两个元素的列表或者元组,二元组列表
③此时可以按照第一个元素作为key,第二个元组作为value
5.组装函数
①zip(sequence1,sequence2)
②把多个序列相同的下标元素组装成元组,结果是一个可迭代对象
③结果要转换成list,但是首次转换后迭代器为空
keys=['a','b','c']
value=[123,456,789]
zipped=zip(keys,value)
print(zipped)
print(list(zipped))
print(list(zipped))
#<zip object at 0x0000029DBD619F80>
#[('a', 123), ('b', 456), ('c', 789)]
#[]
6.创建字典4
利用list(zip(key,value))将二者组装好,然后作为dict的初始化
keys=['a','b','c']
value=[123,456,789]
a=dict(list(zip(keys,value)))
print(a)
所有创建字典的方法都要满足:key不能重复,value无限制;key必须是字符串,数字,元组不可变的类型
02.字典-----访问字典
1.知道下标
将key看做下标,通过key来获取value,a[x]:a为dict,x为a中的一个key,必须存在否则会报错
keys=['a','b','c']
value=[123,456,789]
a=dict(list(zip(keys,value)))
print(a)
print(a['a'],a['b']) #123 456
print(a['d']) #报错
2.不知道下标
需要查询字典中x对应的value,使用get方法
- a.get(x,value=None),a表示字典,x表示查询的key,value表示默认值
- 如果x在字典的key中,则上述的结果为a[x],如果不存在,上述结果为value
keys=['a','b','c']
value=[123,456,789]
a=dict(list(zip(keys,value)))
print(a)
#'a'是key,则输出a['a']
print(a.get('a','XXX'))
#'d'不是key,输出给定默认值XXX
print(a.get('d','XXX'))
#'e'不是key,没有设定默认值,则此时为None
print(a.get('e'))
03.字典基本操作
1.添加和修改元素
直接通过利用key可以访问对应的value,类似的,添加元素,修改元素也是直接利用key和value就能进行添加或者更新
a={}
a['语文']=80
a['数学']=99
#添加元素
a['语文']=85
#修改元素
2.删除元素
- 删除字典中的键值对,可以用python本身的删除语法del
s={'a':123,'b':456,'c':789}
del s['a']
- 也可以用字典的删除方法pop
s={'a':123,'b':456,'c':789}
s.pop('a')
3.遍历字典
1.与list一样,直接利用for语句就可以遍历字典
for x in a:其中x是循环变量,a是字典,此时遍历的是a的key列表
s={'a':123,'b':456,'c':789}
for x in s:
print(x)
#a
b
c
2.利用a.keys(),a.values(),a.items()可以分别循环遍历key,value,二元组(key,value)
s={'a':123,'b':456,'c':789}
for x in s.keys():
print(x)
#a b c
for y in s.values():
print(y)
#123 456 789
for x,y in s.items():
print(x,y)
#a 123
b 456
c 789
4.判断是否存在元素
①x in a,x in a.keys():判断x是否在a的key中
②x in a.values():判断x是否在a的value中
③(x,y) in a.items():判断x是否在a的key中,并且对应的value为y
5.拷贝字典
与list类似,直接复制无法进行复制,需要使用copy函数完成复制
直接复制相当于是"引用",就是添加一个别名
s={'a':123,'b':456,'c':789}
t=s.copy()
s['d']=1000
print(s)
print(t)
#{'a': 123, 'b': 456, 'c': 789, 'd': 1000}
#{'a': 123, 'b': 456, 'c': 789}
6.合并两个字典
字典利用update方法可以将另一个字典的key-value对更新到已有字典中
a.update(b):把字典b中的每个元素放入a中更新
- 如果b中的key在a中没有,则直接在a中添加一组新的key-value对
- 如果b中的key在a中有,则直接更新对应的value
s={'a':123,'b':456,'c':789}
t={'a':321,'d':1000}
s.update(t)
print(s)
#{'a': 321, 'b': 456, 'c': 789, 'd': 1000}
7.例题
输入一行文本(一组数据),统计每个字符(数字)出现次数
s=input()
C={}
for c in s:
#每次字母出现次数+1,最开始次数记为0
C[c]=C.get(c,0)+1
for x,y in C.items():
print("{}:{}".format(x,y))
如果需要只输出小写字母
s=input()
C={}
for c in s:
#每次字母出现次数+1,最开始次数记为0
if c.lower().islower():
C[c.lower()]=C.get(c.lower(),0)+1
for x,y in C.items():
print("{}:{}".format(x,y))