如何通过索引访问嵌套字典值

时间:2019-03-08 12:37:51

标签: python

我正在使用python-nmap库构建扫描仪。这是代码:

import nmap
import json

def Nmap_Recon(host, port):
   nm = nmap.PortScanner()
   lol = nm.scan(host, '22-443')
   print(lol['scan'])
Nmap_Recon('www.stuxnoid.org',80)

输出:

{'77.72.0.90': {'hostnames': [{'name': 'www.stuxnoid.org', 'type': 'user'}, {'name': 'carbon.cloudhosting.co.uk', 'type': 'PTR'}], 'addresses': {'ipv4': '77.72.0.90'}, 'vendor': {}, 'status': {'state': 'up', 'reason': 'syn-ack'}, 'tcp': {25: {'state': 'open', 'reason': 'syn-ack', 'name': 'smtp', 'product': '', 'version': '', 'extrainfo': '', 'conf': '3', 'cpe': ''}, 80: {'state': 'open', 'reason': 'syn-ack', 'name': 'http', 'product': 'imunify360-webshield/1.6', 'version': '', 'extrainfo': '', 'conf': '10', 'cpe': ''}, 443: {'state': 'open', 'reason': 'syn-ack', 'name': 'https', 'product': 'imunify360-webshield/1.6', 'version': '', 'extrainfo': '', 'conf': '10', 'cpe': ''}}}}

我猜输出是字典格式的。问题是,我只想显示打开的端口详细信息。但是端口详细信息嵌套在dict_key IP地址(77.72.0.90)内,并且随着我通过的域不断变化。如何访问这些“打开端口”详细信息并显示它们?

1 个答案:

答案 0 :(得分:0)

如果您的问题是如何从字典中取出第一个项目(python 3.6之前的任意项目),可以这样做:

next(iter(lol['scan'].values()))

或者,具有破坏性(将返回最后一项):

lol['scan'].popitem()[1]