如何访问嵌套Python字典中元组的特定元素
请注意,数据库[j][3]是特定主机缓存表的位置(位于主词汇“数据库”中) 但我想要这样的输出:如何访问嵌套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) 请
{'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