2015-03-08 3 views
3

У меня есть json-файл, который я читаю; выглядит примерно так:python json dict iterate {key: value} одинаковы

[ 
    { 
    "Destination_IP": "8.8.4.4", 
    "ID": 0, 
    "Packet": 105277 
    }, 
    { 
    "Destination_IP": "9.9.4.4", 
    "ID": 0, 
    "Packet": 105278 
    } 
] 

когда я разобрать JSON с помощью:

for json_dict in data: 
    for key,value in json_dict.iteritems(): 
     print("key: {0} | value: {0}".format(key, value)) 

Я получаю:

key: Destination_IP | value: Destination_IP 

Я попытался с помощью .items() и я попытался просто итерацию по клавишам через iterkeys() и keys() безрезультатно.

Я могу называть его прямым через json_dict['Destination_IP'], и значение возвращается.

for json_dict in data: 
    if 'Destination_IP' in json_dict.keys(): 
     print json_dict['Destination_IP'] 

возвращается:

key: Destination_IP | value: 8.8.4.4 

Я на Python 2.7, так что любая помощь в управлении вниз часть стоимости будет весьма признателен.

+6

Это просто ошибка в способе ее печати. Вы написали ключ ': {0} | значение: {0}" ', но вы имели в виду ключ': {0} | значение: {1} "'. – BrenBarn

ответ

9

Меняйте Строковые форматы индекс:

for json_dict in data: 
    for key,value in json_dict.iteritems(): 
     print("key: {0} | value: {1}".format(key, value)) 

Или без использования индекса:

for json_dict in data: 
    for key,value in json_dict.iteritems(): 
     print("key: {} | value: {}".format(key, value)) 

Также вы можете, используя имена вместо индекса:

for json_dict in data: 
    for key,value in json_dict.iteritems(): 
     print("key: {key} | value: {value}".format(key=key, value=value)) 
2

Вы надеваете» t необходимо указать индекс вообще:

for key, value in json_dict.iteritems(): 
    print("key: {} | value: {}".format(key, value)) 
+2

Это работает только для Python 2.7, в 2.6 вам нужно написать позиционные значения - _ «Изменено в версии 2.7: Спецификаторы позиционного аргумента могут быть опущены, поэтому« {} {} »эквивалентно« {0} {1} '. "_ –

+0

Никто не должен когда-либо использовать Python 2.6 в любом случае в 2015 году. – ozgur

+2

@ozgur CentOS и системы RedHat по-прежнему используют 2.6 в качестве системы Python по умолчанию, и существует много устаревшего кода, который работает на 2.6. – MattDMo

Смежные вопросы