『7x24小时有问必答』

---

8.字典

定义

      c++容器中,我们学过一个存储键值对的容器——map容器,它的底层由二叉树实现,可以通过键来访问相关联的值。
      python中也有类似的一个数据结构——字典:
      字典是一系列键值对,每个键都与一个值相关联,也是可以通过键来访问相关联的值,底层由哈希表实现。
      它的书写方式如下:
# 字典用放在花括号内的一系列键值对表示

# 字典的格式为键1:值1,键2:值2......

student_0 = {"grade":"five","age":11}

# 要获取与键相关联的值,可指定字典名和放在方括号内的键

print(student_0["grade"],student_0["age"])

# 输出:five 11

增删改查

添加、修改、查看

student_0 = {"grade":"five","age":11}

student_0["class"]="one"  # 添加一个键值对,键为“class”,值为“one”

print(student_0)

student_0["class"]="two"  # 修改一个键值对,键为“class”,值为“two”

print(student_0)

# 输出:{'grade': 'five', 'age': 11, 'class': 'one'}

#    {'grade': 'five', 'age': 11, 'class': 'two'}

删除键值对

student_0 = {"grade":"five","age":11}

del  student_0["grade"]

print(student_0)

# 输出:{'age': 11}

遍历字典

遍历所有的键值对

利用方法.item()返回一个键值对列表
student_0 = {"grade":"five","age":11,"class":"two"}

# 可以用for循环遍历所有键值对

# 用两个变量key和value分别储存键和值

for  key,value  in  student_0.items():  # 方法.item()返回一个键值对列表

      print("\nKey:"+key)

      print("Value:"+str(value))

输出:

遍历所有键

利用方法.keys()返回包含字典里所有键的列表
student_0 = {"grade":"five","age":11,"class":"two"}

# 用变量key储存键

for  key  in  student_0.keys():  # 方法.keys()返回包含字典里所有键的列表

      print("Key:"+key)

#    输出:

#    Key:grade

#    Key:age

#    Key:class

      注:遍历字典时,如果不点出方法,其实默认就是遍历所有键,也就是上述代码也可以写作for key in student_0:

遍历所有值

利用方法.value()返回一个包含字典所有值的列表
      使用方法和上面两个并没有差异,
      但我们需要注意一个点,字典的键默认是不可以重复的,但是键所对应的值却没有强制规定,可能出现重复现象
      所以如果你有剔除重复项的需求,可以使用函数set()进行强制类型转换,把列表类型转换为没有重复的集合类型。当然字典的遍历默认是无序的,想要对它排序,可以用我们第一期提到的sorted()函数来获取按特定顺序排列的键列表副本
# 记录下来所有人喜欢的语言,并且遍历打印出来都有什么,不允许重复

favorite_languages ={"jen":"python","sarah":"c","edward":"ruby","phil":"python"}

print("The following languages have been mentioned:")

for  language  in  sorted(set(favorite_languages.values())):

      print(language.title())

嵌套

字典嵌套在列表里

# 列表中嵌套了3个学生字典

student_0={"name":"jen","favorite_language":"python"}

student_1={"name":"sarah","favorite_language":"c"}

student_2={"name":"phil","favorite_language":"python"}

students=[student_0,student_1,student_2]

print(students)

列表嵌套在字典里

      每当字典中的某个键需要关联多个值时,都可以把列表嵌套进去
# 一个简易点披萨系统,用字典指定饼皮的薄厚、上面的小料都有什么,并以一定格式打印概述

my_pizza = {

       "crust":"thick",

       "toppings":["mushrooms","extra cheese"]# 列表嵌套在字典里

}

print("You ordered a"+my_pizza["crust"]+"-crust pizza"+

        "with the following toppings:")

for  topping  in  my_pizza["toppings"]:

      print("\t"+topping)

字典嵌套在字典里

      至于字典自身的嵌套,理论上当然可行,但是容易把简单的问题复杂化,并且代码结构不清晰,所以这里就不展开讲了,若感兴趣,可以自己打代码看一看。

9.获取用户输入

      获取用户输入可以使用input()函数,咱们在第二期if语句的补充那里提到过,参数是打印给用户的提示信息
# 可以直接指定提示信息

name = input("Tell me your name:\n")

也可以用变量储存提示信息,格式更加灵活

prompt =  "Thanks,"+name+"\n"

prompt+="\nHow old are you:\n"

age = input(prompt)

print("\nHello,"+name+"-"+age)

      可以看到我们最后一行代码,直接+age,而不用做str()这样的强制类型转换,这足以说明,使用函数input()时,python会将用户输入解读为字符串。

10.while循环

语法

前面咱们已经看过很多python的语法了,他们所能实现的目标与c语言并无差异,只是形式不太相同:
c语言用大括号表示一个代码块,而python用缩进实现
c语言的if语句等条件用括号括起来,而python却不需要
while语句在c语言里的格式为:
while(条件){
执行代码1
执行代码2
}
在python中的格式为:
while 条件 :
[缩进]执行代码1
[缩进]执行代码2
另注:在python的while循环里,也同样可以使用break与continue,用法与c语言一样。
count=0

while  True:

     count+=1

     if  count ==2:

           print("遇到2,跳出本次循环")

           continue

     print("当前:",count)

     if  count==4:

           print("遇到4,退出循环")

           break

用while处理列表

      for循环遍历列表时,是按索引顺序逐个访问元素的。
      而列表的底层是连续存储的动态数组,一旦在遍历过程中删除元素,后续元素会自动向前移动,
      导致for循环的索引和实际元素错位,进而导致遍历过程中的遗漏
      所以,最好的列表处理方案是,只读用for,修改用while。

小编碎碎念
如果你已经学过了其他语言,再想接触python,其实最好的办法不是看网课,而是直接看书,或者可以看别人做的笔记,然后直接写代码验证学习。
我的这些笔记,是阅读过业界公认的python入门友好书籍,提炼总结出来的,如有模糊之处,也推荐大家买一本这个书,看一看该书作者精彩的讲解,感受一下python的精妙。

我是一只思绪漫游的00后,欢迎关注~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码