这篇文章主要讲解了“Python中如何定义字典”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中如何定义字典”吧!
Python中的字典由于是对象的集合属于复合数据类型,类似于列表。
定义字典
字典是 Python 对数据结构的实现,通常称为关联数组。字典由键值对的集合组成。每个键值对将键映射到其关联的值。
可以通过将逗号分隔的键值对列表括在花括号 ( {} ) 中来定义字典。冒号 ( : ) 将每个键与其关联的值分开。
d = { <key>: <value>, <key>: <value>, . . . <key>: <value>}# 定义一个Team>>> MLB_team = {... 'Colorado' : 'Rockies',... 'Boston' : 'Red Sox',... 'Minnesota': 'Twins',... 'Milwaukee': 'Brewers',... 'Seattle' : 'Mariners'... }
可以使用内置dict()函数构建字典。
d = dict([ (<key>, <value>), (<key>, <value), . . . (<key>, <value>)])# 定义一个Team>>> MLB_team = dict([... ('Colorado', 'Rockies'),... ('Boston', 'Red Sox'),... ('Minnesota', 'Twins'),... ('Milwaukee', 'Brewers'),... ('Seattle', 'Mariners')... ])# 另一种定义方式>>> MLB_team = dict(... Colorado='Rockies',... Boston='Red Sox',... Minnesota='Twins',... Milwaukee='Brewers',... Seattle='Mariners'... )
字典内容的显示。
>>> type(MLB_team)<class 'dict'>>>> MLB_team{'Colorado': 'Rockies', 'Boston': 'Red Sox', 'Minnesota': 'Twins','Milwaukee': 'Brewers', 'Seattle': 'Mariners'}
字典中的条目按定义的顺序显示,使用索引无法指定访问元素。
>>> MLB_team[1]Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> MLB_team[1]KeyError: 1
字典的访问
通过在方括号[]中指定对应的键,从字典中检索值。
>>> MLB_team['Minnesota']'Twins'>>> MLB_team['Colorado']'Rockies'
检索值不在字典中则抛出异常。
>>> MLB_team['Toronto']Traceback (most recent call last): File "<pyshell#19>", line 1, in <module> MLB_team['Toronto']KeyError: 'Toronto'
现有字典添加数据只需分配新的键和值。
>>> MLB_team['Kansas City'] = 'Royals'>>> MLB_team{'Colorado': 'Rockies', 'Boston': 'Red Sox', 'Minnesota': 'Twins','Milwaukee': 'Brewers', 'Seattle': 'Mariners', 'Kansas City': 'Royals'}
更新数据,只需为现有键分配一个新值。
>>> MLB_team['Seattle'] = 'Seahawks'>>> MLB_team{'Colorado': 'Rockies', 'Boston': 'Red Sox', 'Minnesota': 'Twins','Milwaukee': 'Brewers', 'Seattle': 'Seahawks', 'Kansas City': 'Royals'}
删除数据,使用 del 指定要删除的键。
>>> del MLB_team['Seattle']>>> MLB_team{'Colorado': 'Rockies', 'Boston': 'Red Sox', 'Minnesota': 'Twins','Milwaukee': 'Brewers', 'Kansas City': 'Royals'}
字典键与列表索引
经常遇见的一些错误做法。
>>> MLB_team['Toronto']Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> MLB_team['Toronto']KeyError: 'Toronto'>>> MLB_team[1]Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> MLB_team[1]KeyError: 1# 数字作为键值使用>>> d = {0: 'a', 1: 'b', 2: 'c', 3: 'd'}>>> d{0: 'a', 1: 'b', 2: 'c', 3: 'd'}>>> d[0]'a'>>> d[2]'c'
不能将字典视为列表。
>>> type(d)<class 'dict'>>>> d[-1]Traceback (most recent call last): File "<pyshell#30>", line 1, in <module> d[-1]KeyError: -1>>> d[0:2]Traceback (most recent call last): File "<pyshell#31>", line 1, in <module> d[0:2]TypeError: unhashable type: 'slice'>>> d.append('e')Traceback (most recent call last): File "<pyshell#32>", line 1, in <module> d.append('e')AttributeError: 'dict' object has no attribute 'append'
增量构建字典
创建新的空字典,然后通过一次添加一个新的键和值构建。
>>> person = {}>>> type(person)<class 'dict'>>>> person['fname'] = 'Joe'>>> person['lname'] = 'Fonebone'>>> person['age'] = 51>>> person['spouse'] = 'Edna'>>> person['children'] = ['Ralph', 'Betty', 'Joey']>>> person['pets'] = {'dog': 'Fido', 'cat': 'Sox'}# 创建和访问字典>>> person{'fname': 'Joe', 'lname': 'Fonebone', 'age': 51, 'spouse': 'Edna','children': ['Ralph', 'Betty', 'Joey'], 'pets': {'dog': 'Fido', 'cat': 'Sox'}}>>> person['fname']'Joe'>>> person['age']51>>> person['children']['Ralph', 'Betty', 'Joey']# 检索字典数据>>> person['children'][-1]'Joey'>>> person['pets']['cat']'Sox'
构建的字典中数据类型没有明确的限制。
>>> foo = {42: 'aaa', 2.78: 'bbb', True: 'ccc'}>>> foo{42: 'aaa', 2.78: 'bbb', True: 'ccc'}>>> foo[42]'aaa'>>> foo[2.78]'bbb'>>> foo[True]'ccc'
字典键的限制
几乎任何类型的值都可以用作 Python 中的字典键。
>>> foo = {42: 'aaa', 2.78: 'bbb', True: 'ccc'}>>> foo{42: 'aaa', 2.78: 'bbb', True: 'ccc'}# 可以使用类型和函数等内置对象>>> d = {int: 1, float: 2, bool: 3}>>> d{<class 'int'>: 1, <class 'float'>: 2, <class 'bool'>: 3}>>> d[float]2>>> d = {bin: 1, hex: 2, oct: 3}>>> d[oct]3
同一字典内重复的键无法添加,如果添加则对原键的值进行替换。
>>> MLB_team = {... 'Colorado' : 'Rockies',... 'Boston' : 'Red Sox',... 'Minnesota': 'Twins',... 'Milwaukee': 'Brewers',... 'Seattle' : 'Mariners'... }>>> MLB_team['Minnesota'] = 'Timberwolves'>>> MLB_team{'Colorado': 'Rockies', 'Boston': 'Red Sox', 'Minnesota': 'Timberwolves','Milwaukee': 'Brewers', 'Seattle': 'Mariners'}
元组也可以是字典键,因为元组是不可变的。
>>> d = {(1, 1): 'a', (1, 2): 'b', (2, 1): 'c', (2, 2): 'd'}>>> d[(1,1)]'a'>>> d[(2,1)]'c'
字典值的限制
字典的中的值是没有任何限制的。
>>> d = {0: 'a', 1: 'a', 2: 'a', 3: 'a'}>>> d{0: 'a', 1: 'a', 2: 'a', 3: 'a'}>>> d[0] == d[1] == d[2]True
运算符和内置函数
in and not in运算符返回True or False。
>>> MLB_team = {... 'Colorado' : 'Rockies',... 'Boston' : 'Red Sox',... 'Minnesota': 'Twins',... 'Milwaukee': 'Brewers',... 'Seattle' : 'Mariners'... }>>> 'Milwaukee' in MLB_teamTrue>>> 'Toronto' in MLB_teamFalse>>> 'Toronto' not in MLB_teamTrue
也可以与短路评估一起使用。
>>> MLB_team['Toronto']Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> MLB_team['Toronto']KeyError: 'Toronto'>>> 'Toronto' in MLB_team and MLB_team['Toronto']False
内置字典方法
与字符串和列表一样字典上也是有调用内置方法。
# d.clear() 清空字典数据>>> d = {'a': 10, 'b': 20, 'c': 30}>>> d{'a': 10, 'b': 20, 'c': 30}>>> d.clear()>>> d{}# d.get(<key>[, <default>]) 如果字典中存在键,则返回该键的值>>> d = {'a': 10, 'b': 20, 'c': 30}>>> print(d.get('b'))20>>> print(d.get('z'))None# <key>未找到并且<default>指定了可选参数>>> print(d.get('z', -1))-1# d.items() 返回字典中的键值对列表>>> d = {'a': 10, 'b': 20, 'c': 30}>>> d{'a': 10, 'b': 20, 'c': 30}>>> list(d.items())[('a', 10), ('b', 20), ('c', 30)]>>> list(d.items())[1][0]'b'>>> list(d.items())[1][1]20# d.keys() 返回字典中的键列表>>> d = {'a': 10, 'b': 20, 'c': 30}>>> d{'a': 10, 'b': 20, 'c': 30}>>> list(d.keys())['a', 'b', 'c']# d.values() 返回字典中的值列表>>> d = {'a': 10, 'b': 20, 'c': 30}>>> d{'a': 10, 'b': 20, 'c': 30}>>> list(d.values())[10, 20, 30]# d.pop(<key>[, <default>]) 从字典中删除一个键,如果存在并返回它的值>>> d = {'a': 10, 'b': 20, 'c': 30}>>> d.pop('b')20>>> d{'a': 10, 'c': 30}# 如果不存在则引发异常>>> d = {'a': 10, 'b': 20, 'c': 30}>>> d.pop('z')Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> d.pop('z')KeyError: 'z'# 如果指定默认参数<default>则返回该值>>> d = {'a': 10, 'b': 20, 'c': 30}>>> d.pop('z', -1)-1>>> d{'a': 10, 'b': 20, 'c': 30}# d.popitem() 从字典中删除键值对>>> d = {'a': 10, 'b': 20, 'c': 30}>>> d.popitem()('c', 30)>>> d{'a': 10, 'b': 20}>>> d.popitem()('b', 20)>>> d{'a': 10}# d为空会引发异常>>> d = {}>>> d.popitem()Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> d.popitem()KeyError: 'popitem(): dictionary is empty'# d.update(<obj>) 将字典与另一个字典或可迭代的键值对合并# (被替换键值).update(替换键值)>>> d1 = {'a': 10, 'b': 20, 'c': 30}>>> d2 = {'b': 200, 'd': 400}>>> d1.update(d2)>>> d1{'a': 10, 'b': 200, 'c': 30, 'd': 400}# 使用元组更新>>> d1 = {'a': 10, 'b': 20, 'c': 30}>>> d1.update([('b', 200), ('d', 400)])>>> d1{'a': 10, 'b': 200, 'c': 30, 'd': 400}# 指定关键字参数>>> d1 = {'a': 10, 'b': 20, 'c': 30}>>> d1.update(b=200, d=400)>>> d1{'a': 10, 'b': 200, 'c': 30, 'd': 400}
感谢各位的阅读,以上就是“Python中如何定义字典”的内容了,经过本文的学习后,相信大家对Python中如何定义字典这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!