在python中 字典是一系列键值对,每个键都有一个值相关联,与键相关联的可以是数字,字符串,列表甚至python中所有的对象用作字典的值。

dict = {key:value} key表示键,value表示值,中间:串联。元素之间用","隔开

python中无论这个表有多大,查询速度都不会变慢

1 dict1 = {1:'a',2:'b'}
2 print(dict1[1])

字典用{}表示,访问字典中的值通过key调用dict[key]注意访问的时候用的也是[]。

1 et_0 = {'name':'etno_0' , 'color':'green' , 'points':'5'}
2 new_points = 0
3 new_points+=int(et_0['points'])
4 print('you beat %s ,add %s points' % (et_0['name'],et_0['points']))

第一行定义了一个叫et_0的字典,储存name,color,points信息

定义了一个变量储存分数,初始值为0

变量增加,et_0 points对应的分数

打印击败的外星人的名字,最新的分数。

添加键值对

字典是一种动态结构,可随时添加键值对

dict1[key] = value 这就是添加键值对

python中key是唯一的所有当定义key一样时,后面的会把前面的替换掉。

如果key不存在就会报错

为了防止报错,我们有两个方法

1.in

dict3 = {‘cc’:23}print('bb' in dict3)

返回一个布尔类型。

2.get方法

print(dict3.get('bb'))
print(dict3.get('bb','no bb'))

当不存在时,返回None,有时返回值

我们也可以设置第二个参数,当不存在的时候返回第二个参数。

请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。 是无序的。

创建一个空的字典

dict2 = {},需要添加值得时候再添加

修改字典中的值

1 et_0 = {'name':'etno_0' , 'color':'green' , 'points':'5'}
2 et_0['color'] = 'red'
3 print(et_0['color'])

同样的通过key来修改对应的值

 1 et_1 = {'name':'et_1','speed':'medium','x_position':0,'y_position':0}
 2 if et_1['speed'] == 'medium':
 3     et_1['x_position'] += 10
 4     et_1['y_position'] += 10
 5 elif et_1['speed'] == 'low':
 6     et_1['x_position'] += 5
 7     et_1['y_position'] += 10
 8 else:
 9     et_1['x_position'] += 15
10     et_1['y_position'] += 10
11 print('#################')
12 print(et_1['x_position'])

这里我们加了三个判断,根据speed的值来改变x_position值

删除键值对

删除,需要制定字典名和键名

 del dict[key]

del et_1[position] 这里删除后就是永久删除,其他的键值不会受到影响

遍历字典

1.遍历所有的键值对

1 print('et_1 %s' % et_1)
2 print('et_1.items %s 类型%s' % (et_1.items(),type(et_1.items()))) #([('y_position', 10), ('x_position', 10), ('speed', 'medium'), ('name', 'et_1')])
3 for key,value in et_1.items():
4     print('%s = %s' % (key,value))
5 for k,v in et_1.items():
6     print('%s = %s' % (key,value))

items() 方法会返回一个键值对列表,每个元素是一个元组储存着键值对。第三行就是items返回的键值对列表


那要遍历所有的key是否要

for k,v in et_1.items():print('%s' % k)

python给我们提供了内置的函数

for x in et_1.keys():print(x)

keys() 方法可以获得字典内所有的键,同样的提取value有values()方法

for v in set(et_1.values()):print(v)

但是我们得到的值可能会有很多重复值,这里可以用set()方法来获得无重复的值的集合

和list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而变慢;
  2. 需要占用大量的内存,内存浪费多。

而list相反:

  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少

小练习

广告投放反馈名单,和其中参与调研的名单,名单里还有调研者年龄,对于参与调研的打印感谢,对于没有参与调研的打印邀请

1 canjia_name = ['cc','yy','lcc','notjoke']
2 canjia_dname = {'cc':23,'notjoke':22}
3 for x in canjia_name:
4     if x not in canjia_dname:
5         print('% sinvite you join our report' % x)
6     else:
7         print('thanks age = %s, %s join us '%(canjia_dname[x],x))

View Code

分析:我们需要打印所有列表内的所有人,for循环,名单中参没参与调研的打印内容不同需要区分,增加if判断。

嵌套

字典列表

字典et_1中包含了一个外星人的各种信息,但无法储存第二个外星人的信息,这时就需要嵌套字典了 。

1 et_2 = {'name':'et_2','speed':'medium','x_position':0,'y_position':0,'points':15}
2 et_3 = {'name':'et_3','speed':'low','x_position':0,'y_position':0,'points':5}
3 et_all = [et_1,et_2,et_3]
4 for et in et_all:
5     print(et)

再来一个练习

输入一个数,生成这个数的外星人列表,随机颜色,难度分数

 1 #生成30多个外星人
 2 import random
 3 def et_make(et_num):
 4     et_color = ['red','blue','green','black']#外星人颜色
 5     et_name = []#空的外星人名字列表
 6     for x in range(0,et_num):#生成所需外星人列表名
 7         et_name.append('et_%s'%x)
 8     et_difficult = ['low','medium','difficult']#外星人难易程度列表
 9     et_points = [5,10,20]#外星人分数列表
10     et_all = []#所有外星人列表
11     for x in range(0,et_num):#for循环生成所需外星人
12         et_rnumd = random.randrange(0,len(et_difficult))
13         et_rnumc = random.randrange(0,len(et_color))
14         et ={ 'name':et_name[x] , 'color':et_color[et_rnumc] , 'difficult':et_difficult[et_rnumd] , 'points':et_points[et_rnumd] }#生成一个外星人
15         et_all.append(et)#将生成的外星人添加到et_all外星人列表内
16     return et_all#返回外星人列表
17 list1 = et_make(50)
18 for x in list1:
19     print(x)

View Code

SET

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以在set中没有重复的key

要创建一个set,需要提供一个list作为输入的集合

s1 = set([1,2,2,3])
print(s1)#{1,2,3}

多输入也没用,key不重复输出{1,2,3},重复元素在set中自动被过滤

添加

add(key)方法,可以重复添加但是不会有效果

s1.add('bb','gg','cc','cc')
print(s1)

删除

s1.remove(1)
print(s1)

set可以看出数学意义上的无序和重复元素的集合,因此,两个set可以做数学意义上的交集并集等操作

提一句方法都没有改变原变量,返回的是一个新变量,所以一般都要新变量保存一下

转载于:https://www.cnblogs.com/notJoke/p/5818134.html

MyPython--基础篇--字典相关推荐

  1. python语音程序设计基础篇_【笔记】python自学笔记(基础篇)——字典操作

    字典:是一系列键值对,每个关键字都对应一个值,我们可以使用关键字来访问关联的值,与关键字关联 的可以是数,字符串,列表乃至字典,事实上,可将任何python对象用作字典的值 字典用放在花括号{}中的一 ...

  2. Kiner算法刷题记(二十一):字典树与双数组字典树(数据结构基础篇)

    字典树与双数组字典树(数据结构基础篇) 系列文章导引 系列文章导引 开源项目 本系列所有文章都将会收录到GitHub中统一收藏与管理,欢迎ISSUE和Star. GitHub传送门:Kiner算法算题 ...

  3. Python详细介绍及使用(基础篇)

    Python详细介绍及使用(基础篇) 第一章 Python基础     Python的由来:1989年,为了打发圣诞节假期,Guido开始写Python语言的编译/解释器.Python来自Guido所 ...

  4. Python Qt GUI设计:信号与槽的使用方法(基础篇—7)

    目录 1.信号与槽的概念 2.信号与槽的基础函数 2.1.创建信号函数 2.2.连接信号函数 2.3.断开信号函数 2.4.发射信号函数 3.信号和槽的使用方法 3.1.内置信号与槽的使用 3.2.自 ...

  5. 计算机编程书籍-笨办法学Python 3:基础篇+进阶篇

    编辑推荐: 适读人群 :本书适合所有已经开始使用Python的技术人员,包括初级开发人员和已经升级到Python 3.6版本以上的经验丰富的Python程序员. "笨办法学"系列, ...

  6. python自动化教程_Python自动化开发实战视频课程-全新基础篇_Python教程

    教程名称:Python自动化开发实战视频课程-全新基础篇 课程目录: 0001.51CTO学院-01Pythons10 day1 开课前言- _* N, R+ w/ T 0001.51CTO学院-01 ...

  7. option:contains后面加变量_Python基础篇 -2:初识Python中的变量

    Python学习基础篇 -2 前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 . 第二篇 ...

  8. 100内奇数之和流程图_Python进阶记录之基础篇(四)

    回顾 在Python进阶记录之基础篇(三)中,我们介绍了Python中分支结构if语句的相关知识以及输入函数input()的基本用法.if语句在我们日后的编程中会经常使用到,今天我们讲一下另一个重要的 ...

  9. 【目录】Python 入门基础篇 <(^-^)>

    Python 入门基础篇 一.关于Python的介绍与准备工作 Python基础介绍 Jupyter notebook基础介绍 Jupyter notebook打开问题 Jupyter noteboo ...

  10. 面试题之第一部分(Python基础篇) 80题

    第一部分(python基础篇)80题 为什么学习Python?==*== # 1. python应用于很多领域,比如后端,前端,爬虫,机器学习(人工智能)等方面,几乎能涵盖各个开发语言的领域,同时它相 ...

最新文章

  1. 2022-2028年中国涤纶市场投资分析及前景预测报告
  2. 251f与ips屏显示器对比_同样是240Hz高刷新率 有了VA屏你还会选择TN?
  3. idea java doc 模板_Idea配置Javadoc
  4. [Android] Git组件化部署
  5. SVM -支持向量机原理详解与实践之五
  6. 要管理组策略 您必须以域用户账户登录此计算机,组策略设置:使普通用户登陆域控制器的电脑...
  7. python精要(78)-模块与包组织(1)-绝对导入
  8. 角色关联权限操作-代码实现
  9. 填补服务机器人市场空白,九号机器人提供智能服务场景解决方案!
  10. 云服务器的主机名是否可以修改??
  11. mongodb数组更新操作符$push
  12. 【C++】图书管理系统(含全部源代码)
  13. WEB浏览器页面上可视化展示JSON数据的方法
  14. [转载][shell]linux常用入门命令
  15. 第四届高教杯计算机绘图教程,第十一届高教杯全国大学生先进成图技术与产品信息建模.PDF...
  16. QQ表情包,动态的那种
  17. 移动、电信、联通、QQ币、游戏点卡快速秒充体验
  18. mysql 赋权限_MySQL赋予用户权限命令总结
  19. 日本的养老现状,会是我们的未来吗?
  20. Michael Nielsen的神经网络与深度学习入门教程

热门文章

  1. Oracle安装后的默认账号以及一些基本操作
  2. ubuntu添加用户并给予sudo权限
  3. 07.RequestResponse
  4. codeforces 1003a Polycarp's Pockets
  5. 【极客日报】约会网站228万用户数据遭泄露;Uber 大量高管离职;周鸿祎称360曾发现特斯拉有漏洞...
  6. microbit V2.0兼容性相关问题记录
  7. Java中方法重写和重载的区别
  8. 浅析一种基于Android、iOS平台的移动端银行卡识别方法,简化移动支付中卡号绑定过程
  9. 个人用户之浪潮云服务器小白教程
  10. 函数参数中的3个点表示什么