Python字典的平滑刷新
在上一教程中,我谈到了Python中非常灵活且灵活的对象类型,即Lists 。 在本文中,我将继续学习另一个灵活的Python对象类型,该类型称为Dictionary (也称为关联数组或哈希 )。 像列表一样,字典是一个重要概念,必须掌握才能在Python之旅中前进。
反正什么是字典?
如果您浏览了“ 列表”一文,将很容易理解“字典”的概念。 它们很像列表,但有两个主要区别:
- 它们是无序集合(与有序列表不同)。
- 键用于访问项目,而不是位置( 即索引)。
字典中的每个键都有一个值,该值可以是任何Python对象类型。 也就是说,字典可以视为键值对。 但是,请注意键不能为列表或字典类型。
让我们创建一个英语-法语词典
正如我们在上一节中看到的,字典只是键值对的无序集合。 让我们使用这个概念来创建我们的第一个示例,即英语-法语字典。 可以如下创建此字典:
english_french = {'paper':'papier', 'pen':'stylo', 'car':'voiture', 'table':'table','door':'porte'}
字典english_french包含五个设置为键的英语单词,其法语含义设置为值 。
假设我们想知道如何用法语说pen 。 我们只需执行以下操作:
english_french['pen']
返回值时将得到stylo 。
使事情更有趣
假设我们有一个french_spanish字典,其词与english_french字典中的词相同,如下所示:
french_spanish = {'papier':'papel', 'stylo':'pluma', 'voiture':'coche', 'table':'mesa', 'porte':'puerta'}
好,您被问到如何用西班牙语说door ,并且您手上没有英语-西班牙语词典! 但是,不用担心,有解决方案。 请向您的english_french词典查询该词,然后使用结果查询french_spanish词典。 明白了吗? 让我们看看如何在Python中做到这一点:
french_spanish[english_french['door']]
结果应该是puerta 。 那不是很好吗? 尽管您没有英语-西班牙语词典,但您只是在西班牙语中获得了door这个词。
字典上的更多操作
在前面的示例中,我们看到了如何创建字典并访问字典中的项目。 让我们看看我们可以对Dictionary进行更多操作。 在下面的示例中,我将使用english_french词典。
词典中有多少个条目?
换句话说,此操作旨在返回字典中的键值对的数量。 可以使用len()运算符执行此操作,如下所示:
len(english_french)
您应该退回5 。
删除金钥
删除字典中的项目是通过按键进行的 。 例如,假设我们要从字典中删除单词(钥匙) door 。 可以简单地完成以下操作:
del english_french['door']
这将删除钥匙 door及其值 porte 。
字典中是否存在密钥?
在上一部分中,我们从字典中删除了钥匙 door 。 如果要检查词典中door仍然存在,请键入:
'door' in english_french
应该返回False 。
因此,您认为以下语句将返回什么? 继续尝试一下(注意not )。
'door' not in english_french
如果我们尝试访问字典中不存在的键会发生什么? 说出english_french['door'] 。 在这种情况下,您将收到类似于以下内容的错误:
Traceback (most recent call last):
File "dictionary.py", line 7, in
print english_french['door']
KeyError: 'door'
创建词典的副本
您可能需要您的english_french词典的副本 ,并将其分配给其他词典。 可以使用copy()函数简单地完成此操作,如下所示:
new_english_french = english_french.copy()
嵌套词典
如上所述,字典中的值可以是任何类型,包括字典。 这称为嵌套 。 这样的一个示例可以如下所示:
student = {'ID':{'name':'Abder-Rahman', 'number':'1234'}}
因此,如果您输入student['ID'] ,则应该得到:
{'name': 'Abder-Rahman', 'number': '1234'}
遍历字典
让我们回到english_french字典。 您可以通过多种方式遍历字典的项目:
for word in english_french:
print word
该语句的结果如下:
car
pen
paper
door
table
请注意,结果中的键顺序与english_french词典中的顺序不同。 现在您可以看到为什么我说字典被视为无序集合。
通过密钥进行迭代的另一种方法如下:
for word in english_french.iterkeys():
print word
注意,我们使用了iterkeys()函数。 可以用于遍历值的类似函数,即itervalues() ,如下所示:
for meaning in english_french.itervalues():
print meaning
在这种情况下,结果应类似于以下内容:
voiture
stylo
papier
porte
table
创建词典的替代方法
还有其他使用dict构造函数在Python中创建字典的方法。 使用dict创建相同的词典ID一些示例如下:
ID = dict(name = 'Abder-Rahman', number = 1234)
ID = dict([('name','Abder-Rahman'),('number',1234)])
ID = dict(zip(['name','number'],['Abder-Rahman',1234])) # keys and values as Lists
词典可以做更多的事情。 查看Python文档以获取更多信息。
翻译自: https://code.tutsplus.com/tutorials/a-smooth-refresher-on-pythons-dictionaries--cms-25198
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
