我们将讲解如何使用字典,它是 Python 的内置类型之一。字典是可变映射类型之一。可变意味着字典可以修改,元素创建后可以更改或删除。映射类型是将键值映射到任意对象的数据类型。
目录
12-1 创建字典
12-2 通过在字典中指定键获取值
12-3 更改字典元素的值或添加新元素
12-4 获取字典的长度(元素个数)
12-5 从字典中删除元素
12-6 检查字典是否包含具有指定键的元素
我们将讲解如何创建新词典。字典包含多个元素,每个元素对应键和对应对象的组合。
通过指定值创建字典
字典是通过在 大括号{ } 之间用逗号 (,) 分隔多个元素来定义的。元素以键:值格式描述键和对应的值对。格式如下。
{key1:value1, key2:value2, ...}
与列表、元组等序列类型不同,字典是映射类型,因此对元素没有顺序(但从Python 3.7开始,字典的顺序保证是元素插入的顺序,即稻田)。不存在索引,也不允许切片。相反,我们可以指定一个键并获取相应的对象。
键可以是任何可散列的对象。具体来说,值不能像不可变对象一样改变,数字、字符串、元组等可以作为字典键。相反,列表和字典等可变对象不能用作键。
该值可以是 Python 可以处理的任何对象,例如数字和字符串。
{1:"Orange", 2:"Lemon", 3:"Peach"} {"red":"红色", "blue":"青色", "yellow":"黄色"}
可以为同一字典中的每个元素指定不同的数据类型对象。
{"old":28, "address":"Qinddao"}
可以创建一个包含空元素的字典。
{}
生成的词典可以分配给数值或字符串等变量来使用。
mydict = {1:"Orange", 2:"Lemon", 3:"Peach"}
指定分配给变量的值作为元素
通过指定值创建字典时,可以通过指定分配值的变量来创建字典,而不是直接输入值。变量可以是键或值。
x = 1
y = "Desktop"
mydict = {x:y}
print(mydict)
>> {1: 'Desktop'}
如果为元素指定了变量名,则将被视为创建字典时分配给变量的值直接写入,而不是将变量引用设置为元素。所以之前的字典与创建的字典完全相同:
mydict = {1:"Desktop"}
print(mydict)
>> {1: 'Desktop'}
创建字典后为变量分配不同的值不会更改字典的元素。
x = 1
y = "Desktop"
mydict = {x:y}
print(mydict)
>> {1: 'Desktop'}
y = "Movile"
print(mydict)
>> {1: 'Desktop'}
字典包含的元素是键和值的组合,通过指定键可以得到对应的值。在这里,我将解释如何在字典中指定键并获取值。
获取给定键的值
字典中包含的元素包含键值对。通过为字典指定键,可以得到键对应的值。
字典[键]
以下示例为字典指定一个键并获取相应的值。
mydict = {"CN":"China", "DE":"Germany", "FR":"France"}
print(mydict["DE"])
>> Germany
print(mydict["FR"])
>> France
print(mydict["CN"])
>> China
指定不存在的健将导致 KeyError 错误。
mydict = {"CN":"China", "DE":"Germany", "FR":"France"}
print(mydict["BR"])
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> KeyError: 'BR'
示例代码
请看下面的示例。
mydict = {"CN":"China", "DE":"Germany", "FR":"France"}
key1 = "JP"
print("key:" + key1 + "、value:" + mydict[key1])
>> key:CN、value:China
key2 = "FR"
print("key:" + key2 + "、value:" + mydict[key2])
>> key:FR、value:France
我能够为字典指定键并获得相应的值。
使用 get 方法获取值
它与指定一个键并获得一个值是一样的,但是如果你指定一个不存在的键,它是一种返回默认值的方法。使用字典类型可用的 get 方法。
字典.get(key[, default])
get 方法检索具有指定为参数的键的元素。如果指定的键不存在,则返回默认值。注意 default 可以省略,省略则返回 None。
具体写如下。
mydict = {"CN":"China", "DE":"Germany", "FR":"France"}
print(mydict.get("DE"))
>> Germany
print(mydict.get("EN"))
>> None
print(mydict.get("EN", "NotFound"))
>> NotFound
key存在则返回对应的值,不存在则返回指定的值不报错。
示例代码
请看下面的示例。
mydict = {"CN":"China", "DE":"Germany", "FR":"France"}
key1 = "CN"
print("key:" + key1 + ",value:" + mydict.get(key1, "NotFound"))
>> key:CN,value:China
key2 = "FR"
print("key:" + key2 + ",value:" + mydict.get(key2, "NotFound"))
>>key:FR、value:France
key3 = "EN"
print("key:" + key3 + ",value:" + mydict.get(key3, "NotFound"))
>>key:EN、value: NotFound
这样我们就能够为字典指定键并获得相应的值。
我们可以稍后通过指定键来更改创建的字典的元素值。此外,如果指定字典中不存在的键,则可以向字典中添加新元素。本节介绍如何更改字典的元素或如何添加元素。
更改字典元素的值
要更改已创建的字典中元素的值,请指定键并分配一个新值,如下所示。
字典 [键] = 值
如果字典中存在指定的键,则用新值替换该键对应的值。
具体写如下。
mydict = {1:"Movie", 2:"Foods", 3:"Reading"}
mydict[2] = "Sports"
print(mydict)
--> {1: 'Movie', 2: 'Sports', 3: 'Reading'}
指定键的相应值已替换为新值。
向字典中添加一个新元素
如果我们指定一个键并为创建的字典赋值,如果该键在字典中不存在,它将作为新元素添加到字典中。
字典 [键] = 值
如果键存在则替换值,或者如果键不存在则将键:值作为新元素添加到字典中。
具体写如下。
mydict = {1:"Movie", 2:"Foods", 3:"Reading"}
mydict[4] = "Sports"
print(mydict)
--> {1: 'Movie', 2: 'Foods', 3: 'Reading', 4: 'Sports'}
示例代码
请看下面的示例。
mydict = {"w":"Water", "o":"Orange", "t":"Tea"}
mydict["t"] = "GreenTea"
print(mydict)
>> {'w': 'Water', 'o': 'Orange', 't': 'GreenTea'}
mydict["c"] = "Coffee"
print(mydict)
>> {'w': 'Water', 'o': 'Orange', 't': 'GreenTea', 'c': 'Coffee'}
通过指定键,我们可以更改现有元素的值或将新元素添加到字典中。
更新字典元素的值或使用来自另一个字典的数据添加新元素
通过使用字典类型中可用的更新方法,您可以使用指定为更新方法参数的字典更新现有字典的元素或添加新元素。
要更新的字典.update(参考字典)
如果另一个字典中包含的元素在目标字典中具有相同的键,则目标字典中键的值将更新为另一个字典中的值。此外,如果另一个字典中包含的元素在目标字典中没有相同的键,它将作为新元素添加到目标字典中。
具体写如下。
mydict = {1:"A", 2:"B", 3:"C"}
otherdict = {2:"b", 4:"d"}
mydict.update(otherdict)
print(mydict)
--> {1:"A", 2:"b", 3:"C", 4:"d"}
具有相同键的元素更新了它们的值,具有不存在键的元素被添加为新元素。
示例代码
请看下面的示例。
lunchdict = {"a":"curry", "b":"paster", "c":"udon"}
todaydict = {"b":"ramen", "d":"omelette"}
lunchdict.update(todaydict)
print(lunchdict)
>> {'a': 'curry', 'b': 'ramen', 'c': 'udon', 'd': 'omelette'}
这样我们就能够使用 update 方法使用来自另一个字典对象的数据更新或添加新元素到目标字典。
我将解释如何使用内置的 len 函数获取字典的长度(元素数)。
获取字典的长度
内置的 len 函数可以获取作为参数指定的对象的长度和元素个数。如果将字典指定为参数,则可以获得字典中包含的元素数。格式如下。
len(字典)
获取参数中指定的列表中的元素数。
len({1:"Apple", 2:"Orange", 3:"Lemon"}) --> 3
示例代码
请看下面的示例。
colorlist = ["Blue", "Red", "Green", "White", "Black"]
print("元素个数为 " + str(len(colorlist)) + " 个。")
>> 元素个数为5 个。
这样我们就能够使用 len 函数获取字典中元素的数量。
我们将解释如何通过从创建的字典中指定一个键来删除一个元素,或者如何删除所有元素。使用 del 语句、pop 方法和 popitem 方法删除元素。还可以使用 clear 方法删除所有元素。
使用 del 语句删除一个元素
del 语句删除通过键检索的字典元素。像这样运行它:
del 字典[键]
del 语句用于删除具有指定键的字典元素。
具体写如下。
mydict = {"A":"Apple", "L":"Lemon", "O":"Orange"}
del mydict["L"]
print(mydict)
>> {'A': 'Apple', 'O': 'Orange'}
指定不存在的键将导致 KeyError 错误。
mydict = {"A":"Apple", "L":"Lemon", "O":"Orange"}
del mydict["P"]
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> KeyError: 'P'
删除具有指定键的元素
和del语句一样,是从字典中删除指定key的元素的方法。使用可用于字典类型的 pop 方法。
辞書.pop(key[, default])
pop 方法使用参数中指定的键检索元素并将其从字典中删除。如果指定的键不存在,则返回默认值(默认值是可选的)。
具体写如下。
mydict = {"A":"Apple", "L":"Lemon", "O":"Orange"}
val = mydict.pop("L")
print(val)
>> Lemon
print(mydict)
>> {'A': 'Apple', 'O': 'Orange'}
在不指定默认值的情况下指定不存在的健,将导致 KeyError 错误。
mydict = {"A":"Apple", "L":"Lemon", "O":"Orange"}
val = mydict.pop("P")
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> KeyError: 'P'
如果指定了default,即使指定了不存在的key,也不会出错,返回default中指定的值。
mydict = {"A":"Apple", "L":"Lemon", "O":"Orange"}
val = mydict.pop("P", "Not Found")
print(val)
>> Not Found
print(mydict)
>> {'A': 'Apple', 'L': 'Lemon', 'O': 'Orange'}
获取最后添加的元素并移除它
一种以(key, value)的形式将最后一个元素作为元组添加到字典中,然后从字典中删除该元素的方法。使用可用于字典类型的 popitem 方法。
辞書.popitem()
以前的版本会获取字典中的任何单个元素并将其删除,而 Python 3.7 及更高版本将获取最后添加的元素并将其删除。
具体写如下。
mydict = {"A":"Apple", "L":"Lemon", "O":"Orange"}
val = mydict.popitem()
print(val)
>> ('O', 'Orange')
print(mydict)
>> {'A': 'Apple', 'L': 'Lemon'}
val = mydict.popitem()
print(val)
>> ('L', 'Lemon')
print(mydict)
>> {'A': 'Apple'}
val = mydict.popitem()
print(val)
>> ('A', 'Apple')
print(mydict)
>> {}
重复调用 popitem 方法将从最后一次添加到字典中获取元素。如果 popitem 方法与空元素一起使用,则会发生 KeyError 错误。
删除所有元素
如何删除字典中的所有元素。使用可用于字典类型的 clear 方法。
字典.clear()
删除所有字典元素。字典对象不会被删除。
具体写如下。
mydict = {"A":"Apple", "L":"Lemon", "O":"Orange"}
mydict.clear()
print(mydict)
>> {}
使用 clear 方法后,字典对象为空。
我们将讲解如何检查指定键的元素是否包含在创建的字典中。使用 in 运算符检查是否包含元素。。
检查是否包含具有指定键的元素
使用 in 运算符检查具有给定键的元素是否在字典中。
键 in 字典
如果字典的元素中存在具有指定键的元素,则表达式为 True。否则为假。
具体写如下。
mydict = {"L":"Lemon", "O":"Orage", "G":"Grapes"}
print("O" in mydict)
>> True
print("P" in mydict)
>> False
请注意,如果我们使用 not in 运算符而不是 in 运算符,则如果具有指定键的元素存在,它将返回 False,否则返回 True。
mydict = {"L":"Lemon", "O":"Orage", "G":"Grapes"}
print("O" not in mydict)
>> False
print("P" not in mydict)
>> True
如何获取字典中的所有键、所有值和所有键值对。使用keys方法获取键,values方法获取值,items方法获取键值对。
获取字典中包含的所有键
使用 keys 方法获取字典中所有键的列表。
字典.keys()
获取字典中包含的键列表。获取的列表作为dict_keys类型的值获取。
mydict = {"L":"Lemon", "O":"Orage", "G":"Grapes"}
print(mydict.keys())
>> dict_keys(['L', 'O', 'G'])
通过结合 for 语句,可以按顺序检索所有键。
mydict = {"L":"Lemon", "O":"Orage", "G":"Grapes"}
for mykey in mydict.keys():
print(mykey)
>> L
>> O
>> G
虽然我们不知道有关 dict_keys 类型的详细信息,但我们可以通过将其指定为列表类型构造函数的参数来获取键列表作为列表。
mydict = {"L":"Lemon", "O":"Orage", "G":"Grapes"}
mylist = list(mydict.keys())
print(mylist)
>> ['L', 'O', 'G']
获取字典中包含的所有值
使用values方法获取字典中所有值的列表。
字典.values()
获取字典中包含的值列表。得到的列表是作为一个dict_values类型的值得到的。
mydict = {"L":"Lemon", "O":"Orage", "G":"Grapes"}
print(mydict.values())
>> dict_values(['Lemon', 'Orage', 'Grapes'])
结合for语句可以按顺序检索所有的值。
mydict = {"L":"Lemon", "O":"Orage", "G":"Grapes"}
for myvalue in mydict.values():
print(myvalue)
>> Lemon
>> Orage
>> Grapes
虽然我们不知道 dict_values 类型的详细信息,但是我们可以通过将其指定为列表类型构造函数的参数来获取键列表作为列表。
mydict = {"L":"Lemon", "O":"Orage", "G":"Grapes"}
mylist = list(mydict.values())
print(mylist)
>> ['Lemon', 'Orage', 'Grapes']
获取字典中的所有键值对
使用 items 方法获取字典中所有键值对的列表。
字典.items()
获取字典中包含的键值对列表。获取的列表作为dict_items类型的值获取。
mydict = {"L":"Lemon", "O":"Orage", "G":"Grapes"}
print(mydict.items())
>> dict_items([('L', 'Lemon'), ('O', 'Orage'), ('G', 'Grapes')])
结合for语句可以按顺序检索所有的值。
mydict = {"L":"Lemon", "O":"Orage", "G":"Grapes"}
for mykey, myvalue in mydict.items():
print("key:" + mykey + ", values:" + myvalue)
>> key:L, values:Lemon
>> key:O, values:Orage
>> key:G, values:Grapes
虽然我们不知道有关 dict_items 类型的详细信息,但我们可以通过将键列表指定为列表类型构造函数的参数来获取列表形式的键。
mydict = {"L":"Lemon", "O":"Orage", "G":"Grapes"}
mylist = list(mydict.items())
print(mylist)
>> [('L', 'Lemon'), ('O', 'Orage'), ('G', 'Grapes')]