我是傻逼
反正没人看
任务描述
本关任务:熟悉字典的相关知识,了解字典的使用。
相关知识
为了完成本关任务,你需要掌握:1.字典的定义,2.字典的相关操作。
字典的定义
字典是 Python
最强大的数据类型之一,通过键-值(key-value)对
的方式建立数据对象之间的映射关系。
字典的每个键-值对用冒号:
分割,每个键-值对
间用逗号,
分隔开,字典是包含在{}
中。
每个键
都与一个值相关联,我们可以使用键来访问与之相关联的值。与键
相关联的值可以是数字、字符串、列表乃至字典。
事实上,可将任何 Python
对象用作字典中的值。
字典的相关操作
- 字典的创建
字典的创建格式如下所示:
d = {key1 : value1, key2 : value2 }
键
必须是唯一的,但值则不必。
值可以取任何数据类型,但键
必须是不可变的,如字符串,数字或元组。
一个简单的字典实例:
>>> dict = {'Alice': '2341', 'Beth': '9102'}
>>> print(dict)
{'Alice': '2341', 'Beth': '9102'}
- 访问字典中的值
要获取与键
相关联的值,可依次指定字典名和放在方括号内的键
。我们访问列表等其他类型是通过方括号[]
内添加索引位置的形式,这里字典我们把索引位置用字典中的键(key)
来代替。
把相应的键放入到方括号中(name[key]
):
>>> dict = {'Name': 'Runoob', 'Age': 7}
>>> print ("dict['Name']: ", dict['Name'])
dict['Name']: Runoob
>>> print ("dict['Age']: ", dict['Age'])
dict['Age']: 7
- 添加元素(键-值对)
字典是一种动态数据结构,可随时在字典中添加键—值对
。要添加键—值对
时,可依次指定字典名、键
和键
对应的值。
下面在字典menu
中添加两道菜的菜名和价格:
>>> #coding=utf-8
#创建并初始化menu字典
>>> menu = {'鱼':40, '猪肉':30, '番茄':15, '拉面':10}
#向menu字典中添加菜名和价格
>>> menu['果汁'] = 12
>>> menu['煎蛋'] = 2
######输出新的menu
>>> print(menu)
{'鱼': 40,'猪肉': 30,'番茄': 15,'拉面': 10, '果汁': 12,'煎蛋': 2}
新的menu
字典包含6
个键-值对
,新增加的两个键-值对
(菜名和对应价格)添加在了原有键-值对
的后面,注意字典中键-值对
的排列顺序和添加顺序没有必然联系,Python
不关心字典中键-值对
的排列顺序,而只关心键与值得对应关系。
同理,字典和列表一样,可以先创建一个空字典,然后可以不断向里面添加新的键-值对。
- 修改字典中的值
字典和列表一样,里面的值都是可以修改的。要修改字典中的值,可直接指定字典中的键所对应的新值。例如,将menu
中的fish
价格改为50
。
>>> #coding = utf-8
#创建并初始化menu字典
>>> menu = {'鱼':40, '猪肉':30, '番茄':15, '拉面':10}
# 修改menu字典中菜fish的价格
>>> menu['鱼'] = 50
# 打印输出新的menu
>>> print(menu)
{'鱼': 50, '猪肉': 30, '番茄': 15, '拉面': 10}
- 删除
键-值对
我们可以通过del
方法删除字典中不需要的键-值对
,使用del
方法时,要指定字典名和要删除的键
。
例如,在menu
菜单中删除键noodles
和它的值。
###### 创建并初始化menu字典
>>> menu = {'鱼':40, '猪肉':30, '番茄':15, '拉面':10}
###### 删除noodles键值对
>>> del menu['拉面']
###### 打印输出新的menu
>>> print(menu)
{'鱼':40, '猪肉':30, '番茄':15}
编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End
区域内进行代码补充,完成字典的相关操作。
测试说明
本关的测试文件是src/step3/dict.py
,测试过程如下:
平台自动编译并运行dict.py
,并获取相应的输出。 平台将程序输出与预期输出对比。如果一致则测试通过,否则测试失败。
开始你的任务吧,祝你成功!
第1关:列表及操作
#coding = utf-8
#********* Begin *********#
#第一步 请在列表fruit中找出不属于水果一类元素,赋值给变量 a
fruit = ["苹果","梨子","菠萝","黄瓜","香蕉"]
a = "黄瓜"
#第二步 将变量 a 的值添加到列表vegetable 的末尾
vegetable = ["土豆","萝卜","茄子","白菜"]
vegetable.append(a)
#第三步 删去列表fruit中不属于水果的元素
fruit.pop(3)
#第四步 将列表fruit和列表vegetable作为元素按顺序加入到列表food中
food = []
food.append(fruit)
food.append(vegetable)
#最后打印输出列表food,打印输出列表food中第1个元素的第3个元素
print(food)
print(food[0][2])
#********* End *********#
第2关:元组及操作
#coding = utf-8
#********* Begin *********#
#第一题 列表和元组相互转换,修改元组中的数据
#第一步 将元组 fruit 转换为一个名为 fruit 的列表并打印输出
fruit = ("苹果","梨子","菠萝","黄瓜","香蕉")
fruit = list(fruit)
print(fruit)
#第二步 在上一步得到的列表 fruit 通过索引位置将"黄瓜"去掉并打印输出
fruit.pop(3)
print(fruit)
#第三步 将上一步的到的列表 fruit 转换为元组并打印输出
fruit = tuple(fruit)
print(fruit)
#第二题 通过元组的嵌套修改元组中的数据
#第一步 创建元组 food 将列表 fruit 和 vegetable 放入其中并打印输出元组food
fruit = ["苹果","梨子","菠萝","黄瓜","香蕉"]
vegetable = ["土豆","萝卜","茄子","白菜"]
food = (fruit,vegetable)
print(food)
#第二步 打印输出上一步得到的元组 food 的第一个元素(列表fruit)
print(food[0])
#第三步 通过索引位置去掉元组 food 的第一个元素(列表fruit)的"黄瓜"
food[0].pop(3)
print(food[0]) #打印输出列表 food 的第一个元素
#第四步 打印输出元组 food
print(food)
#********* End *********#
第3关:集合及操作
# -*- coding: utf-8 -*-
#********* Begin *********#
#第一步 请将列表fruit转换为一个集合
fruit = ["苹果","梨子","菠萝","黄瓜","香蕉"]
fruit = set(fruit)
#第二步 将集合fruit中的“黄瓜”去掉
#fruit.pop(3)妈的报错
fruit.remove("黄瓜")
#第三步 使用"in"判断"黄瓜"是否在fruit中,将判断结果打印输出
print("黄瓜" in fruit)
#第四步 创建空集合food,输出集合food的长度
food = set()
print(len(food))
#第五步 将fruit和vegetable合并到food并输出此时food的长度
vegetable = {"土豆","萝卜","茄子","白菜"}
food = fruit | vegetable
print(len(food))
#********* End *********#
第4关:字典及操作
# -*- coding: utf-8 -*-
#********* Begin *********#
#第一步 创建一个空字典 menu
#第二步 将列表fruit中水果与prices中的价格对应给menu赋值并输出
fruit = ["苹果","梨子","菠萝","黄瓜","香蕉"]
prices = [2,3,10,2,1]
menu = dict(zip(fruit,prices))
print(menu)
#第三步 将20块钱的"哈密瓜"添加到字典menu中并输出
menu["哈密瓜"] = 20
print(menu)
#第四步 将"黄瓜"从menu中去掉并输出
menu.pop("黄瓜")
print(menu)
#第五步 将菠萝的价格修改为9.9,打印输出menu
menu["菠萝"] = 9.9
print(menu)
#********* End *********#