在这篇文章中,我们将介绍Python字典的概念,它们用于什么,以及如何在Python代码中使用字典。
Python字典是由逗号分隔的键/值或项对的序列。
Python字典是通过使用大括号({}).
创建空字典的语法是:
< variable-name > = {}
或
< variable-name > = dict()
创建带有项的Python字典的语法是:
= { key : value , key : value }
键和值对称为项,键和值用冒号分隔(😃。每一项都用逗号分隔。,),整件事情都用花括号({}).
Python字典的特性
Python字典的键不能更改。
可以更改键的值。
排序不显着。在字典中输入项的顺序可能与返回项的顺序不同。
Python字典的特性:Key
键对于使用它们的Python字典是唯一的。我们不能两次分配相同的密钥。
让我们看一个例子。
dict1 = {“Mohit” : 1, “Rahul” : 2, “Mohit” : 3}
dict1
{‘Mohit’: 3, ‘Rahul’: 2}
在上面的例子中,我们使用了相同的键,Mohit, 两次,尽管程序没有出现任何错误。但是,y可以看到最近的钥匙取代了旧的钥匙。
int, float,和string 可以用作钥匙。不包含任何列表的元组可以用作键。让我们看看这个例子。
tuple = ()
dict2 = {tuple : “a”}
dict2
{(): ‘a’}tuple1 = ( [],9 )
dict2 = { tuple1 : “a” }
追溯(最近一次调用):
File “”, line 1, in
TypeError: unhashable type: ‘list’
在该示例中,非常清楚的是,如果使用带有列表的元组,则解释器将抛出一个错误。
Python字典的特性:值
这个值可以重复。
你可以在价值中存储任何东西。
Y可以从字典中添加和更新值。
让我们创建一个空字典并添加一些项目。
AV = {}
AV[ ‘IRON-MAN’ ] = “Tony Stark”
AV[ ‘Thor’ ] = “Chris”
AV
{ ‘IRON-MAN’ : ‘Tony Stark’, ‘Thor’ : ‘Chris’ }
Let us update the values ‘Chris’.
AV[ ‘Thor’ ] = “Chris Hemsworth”
AV
{‘IRON-MAN’ : ‘Tony Stark’, ‘Thor’ : ‘Chris Hemsworth’}
您已经看到,我们可以使用字典的键来更新值。
访问Python字典的值
与Python列表一样,Python字典中不存在索引。这些值只能通过其键访问。
让我们以计算机网络端口为例。
port1 = { 22: “SSH”, 23 : ‘Telnet’, 80: “HTTP”, 53: “DNS”, 443: “HTTPS” }
port1[22]
‘SSH’port1[53]
‘DNS’port1[67]
追溯(最近一次调用):
File “”, line 1, in
KeyError: 67
您可以看到如果一个键不存在,那么解释器就会显示一个错误。为了解决这个问题,get()方法被使用。参见下面的示例。
port1.get(53, “not found” )
‘DNS’port1.get(67, “not found” )
‘not found’
而不是错误,一个定制的消息将被打印出来。
检查密钥是否存在的不同方法
在本节中,我们将看到如何检查某个特定的键是否存在。
你已经看到get() 方法。
port1.get( 22, “Key not found”)
‘SSH’port1.get( 24, “Key not found”)
‘Key not found’
HASKEY()
这个has_key()方法返回True 和False陈述。
port1.has_key(22)
Trueport1.has_key(24)
False
使用in运算符
if 22 in port1:
… print “Key found”
…
Key found
删除Python字典的元素
您可以删除字典的单个元素,也可以删除整个字典。
例
port1 = {22: “SSH”, 23 : ‘Telnet’,80: “HTTP”, 53: “DNS”, 443: “HTTPS”}
del port1[22]
port1
{80: ‘HTTP’, 443: ‘HTTPS’, 53: ‘DNS’, 23: ‘Telnet’}del port1
port1
追溯(最近一次调用):
File “”, line 1, in
NameError: name ‘port1’ is not defined
您可以看到错误,因为名为port的字典确实存在于命令del port 1之后。
使用for循环迭代Python字典
为了迭代Python字典,我们使用了items()或iteritems()方法。这个items()方法返回元组对的列表。这个iteritems()方法是节省内存的迭代器。
在Python 3中,iteritems() 方法已被移除,并且items()方法的工作方式与iteritems()方法。
port1 = {22: “SSH”,23:’Telnet’,80: “HTTP”, 53: “DNS”, 443: “HTTPS” }
for k, v in port1.items():
print k, ” : ” ,v
产出:
考虑一下,您想用另一个字典更新字典。
参见下面的示例。
port1 = { 22: “SSH”, 23 : ‘Telnet’,80: “HTTP” }
port2 = { 53: “DNS”, 443: “HTTPS” }
port1.update( port2 )
print port1
产出:
{ 80: ‘HTTP’, 443: ‘HTTPS’, 53: ‘DNS’, 22: ‘SSH’, 23: ‘Telnet’ }
到目前为止,您已经了解了Python字典的创建、删除项、添加项和更新项。让我们创建一个现有字典的副本。为了复制字典,我们将使用copy() 方法。
port1 = {80: ‘HTTP’, 443: ‘HTTPS’, 53: ‘DNS’ }
port2 = port1.copy()
port2
{80: ‘HTTP’, 443: ‘HTTPS’, 53: ‘DNS’}id(port1)
47341080Lid(port2)
47374680L
在上面的例子中,一本新字典,port2 ,它是port1,已经被创造了。
这两本字典的内存地址是不同的。
实例
让我们用两个列表创建一个字典。
list1 = [1 ,2, 3, 4]
list2 = [ ‘a’, ‘b’, ‘c’, ‘d’ ]
dict1 = { }
for i in xrange( len(list1) ):
dict1[list1[i]] = list2[i]
print dict1
产出:
{1: ‘a’, 2: ‘b’, 3: ‘c’, 4: ‘d’}
同样的结果可以在一条线上实现。参见下面的示例。
list1 = [1 ,2, 3, 4]
list2 = [ ‘a’, ‘b’, ‘c’, ‘d’ ]
print dict(zip(list1,list2))
产出:
{1:‘a’,2:‘B’,3:‘C’,4:‘d’}
下文见 喜欢的收藏点赞
资料私信