Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问嵌套Python字典中元组的特定元素_Python - Fatal编程技术网

如何访问嵌套Python字典中元组的特定元素

如何访问嵌套Python字典中元组的特定元素,python,Python,请注意,数据库[j][3]是特定主机缓存表的位置(位于主词汇“数据库”中) 但我想要这样的输出: {'192.168.0.2': ('02:02:02:02:02:02', 1390555956.276), '192.168.0.1': ('01:01:01:01:01:01', 1390555945.453)} (打印每个MAC(每个元组的第一个元素,例如02:02:02:02:02:02)和缓存表中存在的IP后,也应转到下一行,然后打印同一台PC的同一缓存表中存在的下一个MAC和IP) 请

请注意,数据库[j][3]是特定主机缓存表的位置(位于主词汇“数据库”中)

但我想要这样的输出:

{'192.168.0.2': ('02:02:02:02:02:02', 1390555956.276),
'192.168.0.1': ('01:01:01:01:01:01', 1390555945.453)}
(打印每个MAC(每个元组的第一个元素,例如02:02:02:02:02:02)和缓存表中存在的IP后,也应转到下一行,然后打印同一台PC的同一缓存表中存在的下一个MAC和IP)

请提供帮助。

对于Python 2:

02:02:02:02:02:02      192.168.0.2
01:01:01:01:01:01      192.168.0.1
对于Python 3,我们需要添加括号:

>>> for ip, (mac, t) in database['PC1'][3].items(): print mac, ip
02:02:02:02:02:02 192.168.0.2
01:01:01:01:01:01 192.168.0.1
对于Python 2:

02:02:02:02:02:02      192.168.0.2
01:01:01:01:01:01      192.168.0.1
对于Python 3,我们需要添加括号:

>>> for ip, (mac, t) in database['PC1'][3].items(): print mac, ip
02:02:02:02:02:02 192.168.0.2
01:01:01:01:01:01 192.168.0.1

我得到了您建议的以下输出:('02:02:02:02:02:02','192.168.0.2')('01:01:01:01','192.168.0.1')我只想以字符串格式而不是元组格式打印this@user3209413更新是否为您解决了这个问题?您也可以这样做,例如,
print({}{}.format(mac,ip))
,它在2.x和3.x中的工作原理相同,并明确显示了它应该是什么样子,而不是让您从逗号推断它,并使添加标签、自定义宽度或更改分隔符等变得容易,等等@John1024我正在使用python 2.7,但没有得到你提到的输出,而是得到了一个元组,即('02:02:02:02:02','192.168.0.2'),然后是新行('01:01:01:01:01','192.168.0.1'),我得到了你建议的以下输出:('02:02:02:02:02','192.168.0.2'))('01:01:01:01:01:01','192.168.0.1')我只想以字符串格式打印,而不是像这样的元组格式this@user3209413更新是否为您解决了这个问题?您也可以这样做,例如,
print({}{}.format(mac,ip))
,它在2.x和3.x中的工作原理相同,它明确地显示了这应该是什么样子,而不是让您从逗号推断出来,并使添加标签、自定义宽度或更改分隔符等变得简单。@John1024我使用的是python 2.7,但没有得到您提到的输出一个元组,即('02:02:02:02:02,'192.168.0.2'),然后是新行('01:01:01:01:01,'192.168.0.1'),作为旁注,您无缘无故地过度复杂了。首先,如果数据库中的
j
是真的,那么显然
数据库!={}
必须是真的,那么为什么要检查它呢?(即使您确实需要检查它,正如所说的,只需使用
数据库
,而不是
数据库!={}
len(数据库)>1
或其他任何东西;空集合是假的,非空集合是真的。)但实际上,您很少需要“预检查”就像这样;要么编写代码以使用无故障的方法,如
。get
而不是
[]
,要么使用
try
/
而不是
。作为旁注,您是在无缘无故地过度复杂。首先,如果数据库中的
j
为真,那么显然
数据库!={}
必须为真,那么为什么要检查它呢?(即使您确实需要检查它,正如所说的,只需使用
数据库
,而不是
数据库!={}
len(数据库)>1
或其他任何东西;空集合是假的,非空集合是真的。)但实际上,您很少需要“预检查”完全像这样;要么编写代码以使用无故障方法,如
.get
而不是
[]
,要么使用
尝试
/
,除了
>>> for ip, (mac, t) in database['PC1'][3].items(): print(mac, ip)
02:02:02:02:02:02 192.168.0.2
01:01:01:01:01:01 192.168.0.1