KeyError: 0 при итерации json через python-nmap

Я пытаюсь разобрать специфические значения из моего словаря. Раньше я работал со словарями, и я был уверен, что вы можете перебирать результаты с целыми числами.

Ниже приведен отредактированный пример сканирования nmap (с использованием поддельных IP-адресов). Я пытаюсь получить доступ к ipv4 ценности.

{'165.19.100.145': {'addresses': {'ipv4': '165.19.100.145'}}, '165.19.100.200': {'addresses': {'ipv4': '165.19.100.200'}}}

Я пытаюсь перебрать словарь так:

#!/usr/bin/env python3
import nmap
import json
nm = nmap.PortScanner()
results = nm.scan(hosts='165.19.100.0/24', arguments='-sP')

results_json = json.dumps(results['scan'], indent=4, sort_keys=True, ensure_ascii=False)
json_data = json.loads(results_json)

scan_len = len(json_data)

for x in range(0, scan_len):
    ip_address = json_data[x]['addresses']['ipv4']
    print(ip_address)

Когда я запускаю этот скрипт, я получаю KeyError: 0, Я понятия не имею, почему я могу получить эту ошибку. Не было бы 0 обратитесь к первому 165.19.100.145? Что я здесь не так делаю?

1 ответ

Решение

Потому что вы перебираете не список, а словарь. в словаре нет указателей афаик. скорее сделайте это:

for key, value in json_data.iteritems():
    print json_data[key]['addresses']['ipv4']
Другие вопросы по тегам