Python 从字典中的3元组中提取特定元素

Python 从字典中的3元组中提取特定元素,python,Python,给一本字典: self.mapping = {} # key= IP, value = (mac,id,port) 其中,值为3元组值。如果我知道键,如何从3元组中获取特定元素?例如,我想获得与给定的IP对应的id 谢谢。您需要使用基本的python序列索引。 根据您的样本: self.mapping['some IP'][1] 签出。首先,您将获得整个元组: self.mapping["192.168.1.1"] 然后你只需要得到第二个元素: self.mapping["192.16

给一本字典:

self.mapping = {}  # key= IP, value = (mac,id,port)
其中,值为3元组值。如果我知道键,如何从3元组中获取特定元素?例如,我想获得与给定的
IP
对应的
id


谢谢。

您需要使用基本的python序列索引。 根据您的样本:

self.mapping['some IP'][1]

签出。

首先,您将获得整个元组:

self.mapping["192.168.1.1"]
然后你只需要得到第二个元素:

 self.mapping["192.168.1.1"][1]

Python字典和元组使用括号表示法引用。使用相应的键引用字典值;元组中的项由索引引用,使用基于零的编号(即元组中的第一项具有索引0,第二项具有索引1,依此类推)

在您的情况下,可以使用IP地址键引用字典值:

self.mapping['IP address']
可以使用索引引用元组项:

my_tuple[1]
通过将两者结合起来,可以引用字典值元组中的特定项。在您的示例中,ID是索引1处的第二个值,因此您可以使用:

self.mapping['IP address'][1]
您可以使用
get()

mac_addr, c_id, port = self.mapping.get('192.168.1.1', (None, None, None))
它避免了当前IP不在dict中时引发的
KeyError
异常

如果只想提取id字段:

_, c_id, _ = self.mapping.get('192.168.1.1', (None, None, None))
id=self.mapping[“192.168.1.1”][1]