当前位置:首页>python>python快速上手(c转py)[第三期]

python快速上手(c转py)[第三期]

  • 2026-10-11 07:57:41
python快速上手(c转py)[第三期]

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语言并无差异,只是形式不太相同:

while语句在c语言里的格式为:

while(条件){

执行代码1

执行代码2

}

在python中的格式为:

while 条件 :

[缩进]执行代码1

[缩进]执行代码2

另注:在python的while循环里,也同样可以使用break与continue,用法与c语言一样。

count=0
whileTrue:
   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后,欢迎关注~

最新文章

随机文章