字典 dictionary

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,ax: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方法

  1. a.get(x,value=None),a表示字典,x表示查询的key,value表示默认值
  2. 如果x在字典的key中,则上述的结果为ax,如果不存在,上述结果为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

Cc=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():

Cc.lower()=C.get(c.lower(),0)+1

for x,y in C.items():

print("{}:{}".format(x,y))

相关推荐
2601_9620715711 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
学术 学术 Fun11 小时前
如何用 API 与 Webhook 批量把图表图片转换成 VSDX
python·自动化·api·visio
淡海水12 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
2601_9621005412 小时前
python包和模块的内容整理
python·模块·导入·虚拟环境·
CS_Zero13 小时前
C语言sizeof是函数吗?
c语言·开发语言
二进制漫游记13 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
-今昭-13 小时前
《V2V 迁移实战:将 VMware 虚拟机转为 OpenStack 可用 Glance qcow2 镜像》
开发语言·python
2601_9623815814 小时前
【转】Python渗透测试工具:sqlmap
python·渗透测试·sql注入·sqlmap·数据库安全
用户37215742613514 小时前
如何使用 Python 从 Word 文档中提取图片
python
黑马程序员毕设15 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设