2016-01-22 2 views
0

У меня есть JSon файл со словарем, а также списки внутри этого словаряПолучение словарь Json/список значений питона

{"Dogs": [["spot"], 1], "Cats": [["whiskers"], 1], "fish": [["bubbles", "lefty", "tank", "goldie"], 4], "elephant": [["tiny", "spring"], 2], "zebra": [[], 1], "gazelle": [["red", "blue", "green", "yellow", "gold", "silver"], 6]} 

Там больше в словаре, но из этого примера вы можете увидеть формат.

with open('myfile.json', 'r') as myfile: 
json_data = json.load(myfile) 
for e,([v], z) in json_data.items(): 
    print e, v, z 

Это дает мне

too many values to unpack error. 

Я хочу, чтобы выход выглядеть

dogs spot 1 
cats whiskers 1 
+0

Что вы хотите случиться для рыбы? Вы не можете распаковать в список. – L3viathan

+0

Каким должен быть результат, когда в списках есть несколько вещей? –

ответ

1

Предположив вы хотите, чтобы все названия животных (?) Вывод

... 
for e, (v, z) in json_data.items(): 
    print('%s %s %d' % (e.lower(), ' '.join(v), z)) 

выходы

gazelle red blue green yellow gold silver 6 
fish bubbles lefty tank goldie 4 
cats whiskers 1 
zebra 1 
elephant tiny spring 2 
dogs spot 1 
0

гораздо проще, так как значение всегда будет список:

with open('myfile.json', 'r') as myfile:  
    json_data = json.load(t) 
    for e, v in json_data.items(): 
     print e, " ".join(v[0]), v[1] 

Это дает:

gazelle red blue green yellow gold silver 6 
fish bubbles lefty tank goldie 4 
Cats whiskers 1 
zebra 1 
elephant tiny spring 2 
Dogs spot 1 
Смежные вопросы