十一、字典

说字典前,得说两种数据类型。可变和不可变。

不可变类型:数字、字符串、元组;

可变类型:列表,字典。

1.字典的每个键值“key=>value”用冒号“:”分割,每个对之间用逗号(,)分割,整个字典包括在花括号‘{ }’中。

两大特点:无序,键唯一。

格式:dict = {key1: value1, key2: value2}

key(键)必须是唯一的,即不可变的类型:字符串、数字、元组;

value(值)可以取任何数据类型。

键值对:

“key1: value1”称为一对键值对,

相当于函数中的映射关系:一个x只能对应一个y,一个y可以对应多个x。

在列表中,找值是通过索引值来进行的;

而在字典中,找值就通过键来进行。

2.字典的创建:

如上面格式。

这里讲一下多层嵌套字典的创建

dict = {

key1:

{key2:

{key3:value},

},

}

这是一个三层嵌套的字典。上面也说了,key(键)必须是不可变类型的数据。

eg:

下面作业代码里的字典创建。

3.为方便我们下面对字典进行操作,先创建一个字典:

dict= {‘name‘ :‘dejian‘,‘age‘ = ‘30‘,‘hobby‘ = ‘play_games‘}

1)查操作

①通过键名去查找:

a = dict[‘name‘]

print(a)

>> dejian

②用keys()方法;

print(dict.keys())

print(list(dict.keys()))

>>dict_keys([‘name‘, ‘age‘, ‘hobby‘])

[‘name‘, ‘age‘, ‘hobby‘]

第一行把字典里所有的键拿出来,但出来的类型不是列表

第二行,将该类型转化为列表

③values():同上,取得是值;

④items():同上,取得是键值对。

2)增加:

①直接添加,给定键值对

eg:

dict[‘id‘] = ‘student‘

print(dict)

>>{‘name‘ :‘dejian‘,‘age‘ : ‘30‘,‘hobby‘ : ‘play_games‘,‘id‘ : ‘student‘ }

字典里就多了一对键值对 ‘id‘:‘student‘

如果给定的键值对存在,就修改该键值对的值。

②用方法setdefault()

print(dict.setdefault(‘name‘,‘qianchen‘))#键‘name‘在字典中,不创建键值对,返回值为该键对应的值

print(dict.setdefault(‘name1‘,‘qianchen‘))#‘name1‘不在字典里,创建新的键值对,返回值是这个键对应的值

print(dict)

>>dejian

qianchen

{‘name‘: ‘dejian‘, ‘age‘: ‘30‘, ‘hobby‘: ‘play_games‘, ‘name1‘: ‘qianchen‘}3

3)修改:

①通过键名,同2)增加中的①,就是键本来存在,就修改键对应的值。

②用update()方法

类似于列表中的extend()方法

如果存在该键值对的话,就覆盖掉,

不存在的话,就追加进字典里。

4)删除:

①del dict

>> 删除整个字典

del dict[‘name‘]

>> 删除键‘name‘对应的键值对

②clear()方法

>> 清空字典里的键值对

③pop()方法

>> 括号里加的是键,通过键值删掉键值对,然后键对应的值作为返回值返回;

和列表里的区别:列表通过索引值来删除

④popitem()

>> 随机删除某组键值对,并以元组方式返回值

5)其他操作:

①formkeys()

>> 创建一个新字典

②copy()

>> 学完深浅copy再回来,上面也是

6)排序

①sorted()方法

>> 对键进行排序

sorted(dict.values)

>> 对值进行排序

7) 遍历

① for i in dict:      (推荐使用)

print(i)

>>

name

age

hobby

得到的是字典里的键

②for i in dict:

print(i,dict[i])

>> 打印的是键 值

③for i in dict.items():

print(i)

>> 输出的类型 是 元 组(有括号)

④for i,v in dict.items():

print(i,v)

>> 输出内容的就不会出现括号了

十二、字符串

1.双引号和单引号没有区别

2.*n,打印n行

eg:

str = "I‘m Dejian."

print(str)

print(str*9)

>>

I‘m Dejian.

I‘m Dejian.I‘m Dejian.I‘m Dejian.I‘m Dejian.I‘m Dejian.I‘m Dejian.I‘m Dejian.I‘m Dejian.I‘m Dejian.

第二个打印出9次str

3.通过索引

4.判断在不在字符串:用 in

print(‘ji‘ in str)

>> True

5.格式化输出

>> 没有写死,更加灵活

6.字符串拼接

1.c = a + b

效率低,要不断开辟变量

2.join()方法

c= ‘‘.join([a,b])

>> 将ab拼接在一起,如果‘‘里面有内容,则夹在ab间

eg:d = ‘*‘.join([a,b,c])

print(d)

>> a*b*c

7.重要的字符串的内置方法

1)count()   统计元素个数

2)capitalize()   首字母大写

3)center(a,‘b‘) 居中,左右两边用b打印

4)startswith()   判断是否以某个内容开头

可作为文件处理的判断标志

5)find()   查找到第一个元素,并将索引值返回

6)format() 格式化输出 参数以赋值

7)lower() 大写变小写

8)upper()   小写变大写

9) strip()   把头和尾的空格、换行符去掉

10)split(‘a‘,b)   分割

把字符串变成 列表

以a为准,分割b次

反之用join()

11) replace(‘a‘,‘b‘)   把a用b取代掉,所有的a

str = "i‘m Dejian.mmm"

# print(str)

# print(str*9)

print(‘De‘ in str)

print(str.count(‘m‘))

print(str.capitalize()) #首字母大写

print(str.center(50,‘*‘))

print(str.startswith(‘i‘))

print(str.find("e"))

print(str.lower())

print(str.upper())

print(str.split(‘e‘))

print(str.replace(‘m‘,‘n‘))

作业:多级菜单程序:

代码如下:

menu = {

‘广东‘:{

‘广州‘:{

‘越秀区‘:{‘东湖‘,‘白云‘,‘大东‘},

‘白云区‘:{‘三元里‘,‘同和‘,‘永平‘},

‘天河区‘:{‘沙东‘,‘沙河‘,‘黄村‘},

},

‘深圳‘:{

‘南山区‘:{‘西丽‘,‘沙河‘,‘水湾‘},

‘福田区‘:{‘福田‘,‘梅林‘,‘华强北‘},

‘龙岗区‘:{‘龙岗‘,‘龙城‘,‘横岗‘},

},

‘汕头‘:{

‘潮南区‘:{‘陈店‘,‘两英‘,‘司马浦‘},

‘龙湖区‘:{‘珠池‘,‘新津‘,‘金霞‘},

‘濠江区‘:{‘河浦‘,‘玉新‘,‘达濠‘}

},

},

‘浙江‘:{

‘杭州‘:{

‘上城区‘:{‘湖滨‘,‘清波‘,‘望江‘},

‘临安区‘:{‘青山湖‘,‘锦城‘,‘玲珑‘},

‘西湖区‘:{‘北山‘,‘灵隐‘,‘文新‘},

},

‘宁波‘:{

‘镇海区‘:{‘庄市‘,‘骆驼‘,‘蛟川‘},

‘北仑区‘:{‘春晓‘,‘梅山‘,‘郭巨‘},

‘奉化区‘:{‘锦屏‘,‘江口‘,‘尚田‘},

},

‘温州‘:{

‘龙湾区‘:{‘永中‘,‘海城‘,‘沙城‘},

‘鹿城区‘:{‘五马‘,‘滨江‘,‘七都‘},

‘洞头区‘:{‘东屏‘,‘灵昆‘,‘元觉‘}

},

},

‘安徽‘:{

‘合肥‘:{

‘蜀山区‘:{‘西园‘,‘稻香村‘,‘南七‘},

‘瑶海区‘:{‘三里街‘,‘明光路‘,‘和平路‘},

‘庐阳区‘:{‘十字街‘,‘新华街‘,‘中山街‘},

},

‘安庆‘:{

‘迎江区‘:{‘龙狮桥乡‘,‘长风乡‘,‘青龙‘},

‘大观区‘:{‘德宽路‘,‘菱湖‘,‘集贤路‘},

},

‘淮北‘:{

‘相山区‘:{‘东山‘,‘相南‘,‘三堤口‘},

‘烈山区‘:{‘杨庄‘,‘任楼‘,‘古饶‘},

‘杜集区‘:{‘高岳‘,‘朔里‘,‘石台‘}

},

},

}

current_dict = menu

condition1 = True

condition2 = True

while condition1 and condition2:

for key in current_dict:

print(key)

choice = input(‘请输入您想进入的地方:‘).strip()

if choice in current_dict:

while condition1 and condition2:

for key2 in current_dict[choice]:

print(key2)

choice2 = input(‘您已进入%s,请输入您想进入的地方:‘%choice).strip()

if choice2 in current_dict[choice]:

while condition1 and condition2:

for key3 in current_dict[choice][choice2]:

print(key3)

choice3 = input(‘您已进入%s,请输入您想进入的地方:‘%choice2).strip()

if choice3 in current_dict[choice][choice2]:

while condition1 and condition2:

for key4 in current_dict[choice][choice2][choice3]:

print(key4)

choice4 = input(‘您已进入%s,请输入您想进入的地方:‘%choice2).strip()

if choice4 in current_dict[choice][choice2][choice3]:

print(‘恭喜您已成功进入%s,程序退出,谢谢使用。‘%choice4)

condition1 = False

elif choice4 == ‘q‘:

print(‘程序已退出,谢谢使用。‘)

condition1 = False

elif choice4 == ‘r‘:

condition2 = False

else:

condition2 = True

elif choice3 == ‘q‘:

print(‘程序已退出,谢谢使用。‘)

condition1 = False

elif choice3 == ‘r‘:

condition2 = False

else:

condition2 = True

elif choice2 == ‘q‘:

print(‘程序已退出,谢谢使用。‘)

condition1 = False

elif choice2 == ‘r‘:

condition2 = False

else:

condition2 = True

elif choice == ‘q‘:

print(‘程序已退出,谢谢使用。‘)

condition1 = False

代码一的效果图如下:

这是一个可以完成该要求的代码,但是这样的代码太lower了,因此需要对其进行重构,减少代码的重复使用。

根据目前所学知识,以下代码可是相当的优秀,实现这个功能。

最最最行的参考代码:

明天再补上了,现在想自己在做一遍,看看能不能回想起来。

原文地址:https://www.cnblogs.com/doit9825/p/13047227.html

python基础ppt_python基础知识(三)相关推荐

  1. python基础ppt_Python基础课件.ppt

    Python基础课件.ppt 6.10 问题解答 (1)能不能像执行.exe文件那样执行.py文件呢? 在Windows上是不行的,但是,在Mac和Linux上是可以的,方法是在.py文件的第一行加上 ...

  2. 基础(网络知识 三)——网络系统各层协议分析总结(TCP/IP/UDP/HTTP.....)

    网络系统按照分层的思想设计了当下的网络系统结构,主要是TCP/IP四层网络结构,各层是如何工作的呢?每一层都有相关的协议,各协议具体是什么?原理与作用是什么?本节主要总结介绍网络层的相关协议规则,从而 ...

  3. 2022-08-13 零基础吉他入门知识(三) 六线谱,和弦图和爬格子的知识补充,吉他中的和弦:大三和弦的各个和弦图理解

    文章目录 1.六线谱 2.和弦图(补充) 3.爬格子(补充):按照六根弦的音阶来爬格子 4.吉他中的大三和弦 4.1.C和弦 4.2.D和弦 4.3.E和弦 4.4.G和弦 4.5.A和弦 4.6.练 ...

  4. python入门有基础-Python基础知识入门,这三个原则是你要知道的,还有教程

    很多人都说Python是最容易入门的编程语言,但是入门Python,你必须要明白这三个原则. 否则,你一定很难入门Python. 第一,一定要从最简单的开始(尾部还有最简单的入门教程) 我接触过一些想 ...

  5. Python培训入门基础知识学什么?

    Python培训基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python培训入门基础知识学什么呢?来看看下面小编 ...

  6. python编程基础知识体系_最新版 17 幅思维导图:Python 编程之核心知识体系

    原标题:最新版 17 幅思维导图:Python 编程之核心知识体系 导读:本文主要涵盖了 Python 编程的核心知识,展示了一系列思维导图,主要就 Python 核心基础知识进行了细致梳理.无论你是 ...

  7. python基础语法及知识总结-Python 学习完基础语法知识后,如何进一步提高?

    ---4.30更新---感谢大家支持,点赞都破两千了.给大家整理出来新的资料,需要的小伙伴来自取: Python练手项目视频如下: Python自学基础知识如下: 以下为原文内容: Python 学习 ...

  8. python基础教程第三版怎么样-Python基础教程(第三版)(七)再谈抽象

    菜鸡的学习笔记. 7.1 对象魔法 多态:可对不同类型的对象执行相同的操作,但是操作将随对象所属的类型而异: 封装:对外隐藏对象内部工作原理的细节: 继承:可基于通用类创建出专用类. 按作者的意思,多 ...

  9. 学python需要什么基础知识-没学过Python先要学习哪些基础知识?

    零基础学Python应该学习哪些入门知识 关于零基础怎么样能快速学好Python的问题,百度提问和解答的都很多,你可以百度下看看.我觉得从个人自学的角度出发,应从以下几个方面来理解: 1 为什么选择学 ...

  10. python基础知识资料-学习Python列表的基础知识汇总

    千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天,本喵带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要 ...

最新文章

  1. QString与中文问题
  2. 鸿蒙系统的平板电脑,亓纪的想法 篇三百六十三:骁龙870+鸿蒙2.0!首款鸿蒙系统平板曝光,支持第二代M-Pencil...
  3. 去哪儿app_58款APP遭点名,多家基金、银行产品上榜!
  4. MATLAB 生成随机数
  5. 2008 r2 server sql 中文版补丁_sql server 2008 r2 sp4
  6. IDEA 连接 ORACLE 的配置(OJDBC14通过pom配置, OJDBC7通过library配置)
  7. AE CS6 安装后启动报错BUG解决
  8. 学算法先学数据结构?是否是无稽之谈?
  9. 关于Android端模拟登陆教务系统
  10. webhook小试水(无需外网服务器)
  11. 计算机开机按f1f2,电脑开机总是提示按f1 f2问题的解决办法
  12. Excel服务器实现多用户协作
  13. css设置透明背景,背景色透明度
  14. FHQ Treap 总结
  15. Shell脚本详解---一篇搞定
  16. 如何在ESXi中启用巨型帧支持?
  17. wc 一个进程结果是2_用开放的wc创建一个Web组件
  18. idea 从入门到癫狂
  19. USUS微软补丁服务器 使用
  20. Mysql中的 not null

热门文章

  1. 用js改变网页的背景颜色
  2. 【论文阅读】中医类药性分析:使用机器学习方法预测类药性
  3. 社招看这里: 高级开发工程师/技术专家 [组内直推]
  4. 程序设计基础流程图以及进制的介绍
  5. (总结)Web性能压力测试工具之Siege详解
  6. 荐书 | 抑郁症的自助手册,觉察自我的钥匙
  7. 点击发票填开就出现金税盘处于报税期,不能开票,怎么回事呢?
  8. 批处理创建桌面快捷方式
  9. 服务器装win7没有硬盘模式,联想电脑BIOS里硬盘的SATA,AHCI模式里面怎么没有I...-联想p310工作站装win7,联想电脑工作站...
  10. 维基百科怎么做_维基百科创建修改技巧分享!