上两节课我们学习的内容还是蛮复杂滴,所以……大家学得懂吗?有困难记得私信哦!
这节课,我们要学习一个更为实用性的东西——字典。字典是“dictionary”那个吗?接下来,我们就来揭晓这个谜。
dict_0 = {'we':'我们','you':'你们'}
print(dict_0['we'])
print(dict_0['you'])
这就是字典。从它的特征里可以看出:字典的结构和我们之前讲的变量和列表差不多。
我们先来看一下字典的基础结构:
dict_name = {'name_1':'things','name_2':'things'}
这个结构的特征主要体现在后面。中括号中包着如此结构名称:对应内容 名称:对应内容
在下面的print函数中,索取方式很像索引字典名称[中对应值]
。
下面我们直接上结构:
dict_name = {'name_1':'things','name_2':'things'}
print(dict_name['name_1'])
print(dict_name['name_2']
这个结构就是“字典的基础结构”。
但是,看似简单的一个结构,其实坑也不少。
接下来,注意点转移到这行代码:
print(dict_name['name_1'])
我们可以清楚地看到:dict_name后面中括号里有**引号‘’**串联整个索取,这就是最大的易错点。大家可千万别把这个name_1当成变量看!
接下来看到这一行:dict_name = {'name_1':'things','name_2':'things'}
注意啦!‘name_1’:'things’后面可是有逗号隔开的!千万别漏了,否则报错了可会让你一头雾水。
还是上面两个单词,大家来看看它们怎么插入字符串
dict_1 = {'you':'你们','we':'我们'}
word_0 = dict_1['you']
print(f"'You' means {word_0}")
还是这几个单词。虽然没有几行代码,但是注意点和意义还是蛮复杂的。
首先,第一行的代码不难,但是第二行有点让人摸不着头脑:为啥好好的字典索引变成变量赋值了呢?很简单,原理和之前的缩影一样,只不过形式变了。
第三行就更恶心了:前面那个“f”是什么东西?中间怎么word_0又多了个大括号?“f”指代的是“format()”函数,用于格式化优化,大家不用管,只要会用就行了。后面的word_0加了个大括号,是因为字典赋值的缘故。这里的注意点我也一一为大家列出来:
f一旦漏了,那么就变成了这样:
虽然没有报错,但是不是我们想要的结果,而是一个普通的字符串。所以,f至关重要,大家一定不要漏。
也可以写成这样:
注意了!!!引号一定要包注{word_0},否则有素质的Python编译器会免费送给你报错提示
这个很重要,就连我也经常因为这个失败。所以,大家只要记住:字典名在后面的代入中不适用就行了(索引情况除外)
字典赋值除了可以像索引和列表一样上来就赋值,还能这样搞:
#方式1
dict_2 = {'we':'我们','you':'你们'}
print(dict_2)
#方式2
dict_2 = { }
dict_2['we'] = '我们'
dict_2['you'] = '你们'
print(dict_2)
在方式2可以看到,我们先是新建了一个新的空字典,然后用索引将其添加元素,是不是很神奇?这样的话犯错率会大大降低,但是不如第一种简洁,所以大家自己那个用地顺那个好
这个操作非常有意思,这是我们必须用到一个新的关键字:del关键字。
话不多说,直接看例子
dict_2 = {'we':'我们','you':'你们'}
del dict_2['we']
print(dict_2)
运行一下,我们会发现‘we’所对应的索引消失了,这是因为我们第二行中有一个del。
del,全拼delete,中文意思是“删除”,大家在自己的电脑键盘上应该也能看到。结构我就不说了,就是del 对应索引
这个是比较灵活的,我们要学习两类。
在学习这之前,我们还要学习个新的关键字:in
in关键字非常简单,主要就是判断,和if用的比较多。在下面我们还会再后面学for循环中,有一个结构叫做for i in range( , )
,这中间的in就是它了。
我们先来做几个in判断。
打开IDLE,跟我来!
前两行非常简单,就是简简单单的“找数字”,在就true,不在就false
但是后两行就有点恶心了:明明都有dict,为啥第一个是对的,第二个是错的呢?
因为in只能找一模一样的东西,顺序得一样,就算是提取一段字符。所以,到时后找in,前提条件是想找的和提取的字符、顺序都一样。
接下来就是实操时间
还是例子:
dict_2 = {'we': '我们','you':'你们'}
if 'we' in dict_2:
print("我们")
if 'us' in dict_2:
print("我们")
else:
print("No")
if的条件中多了in的语句,作用是判断in前面的对应索引在不在dict_2里,如果在,就执行if里的,不行就else里的,这个非常好用,得好好掌握。
为了综合以上知识,我们来做一个简单的字典项目
项目:小明的老师让他们制作一本“元字典”,字典里包含了大量词语,字典包含了以下内容:
ability 能力
accept 接受
achieve 获得
advantage 优点
active 活跃的
account 账户
appear 出现
帮他制作元字典,并完成以下任务
(1)打印字典全文
(2)提取字典中的“account”这个单词以及意思
(3)使用字典中的单词“advantage”,说出它的意思并将其与an合并成一个词组
(4)用if判断字典的“appear”项是不是“活跃的”。是输出yes,不是输出no,并纠正
(5)判断单词“active”在不在字典里。
(6)按照小明的需求,删除字典中的前三个单词+意思
啊,白费周折的字典内容总算大功告成!我们这次学习的知识虽然很实用,但是还是有一点点瑕疵——for循环遍历列表没有讲,因为for循环没有学习。下节课,我们会学习列表的高级操作,还会学习元组(可能),敬请期待吧!
最后,制作不易,一圈三连,点个关注哦!
english_dict = {
'ability':'能力',
'accept':'接受',
'achieve':'获得',
'advantage':'优点',
'active':'活跃的',
'account':'账户',
'appear':'出现'
}
#1
print(english_dict)
#2
print(english_dict['account'])
#3
print(english_dict['advantage'] + 'an' + 'advantage')
#4
if 'appear' == '活跃的':
print("yes")
else:
print('no')
print(english_dict['appear'])
#5
if 'active' in english_dict:
print('yes')
else:
print('no')
#6
del english_dict['ability']
del english_dict['accept']
del english_dict['achieve']
print(english_dict)