#python #json
Вопрос:
У меня есть этот файл Json, и я хочу вывести «navn» с помощью итерации. Мне нужно, чтобы он напечатал: Трактор Билл и ничего больше, как мне это сделать ?
[ {"navn": "Traktor", "år": 10, "købspris": 10000}, {"navn": "Bil", "år": 20, "købspris": 100000}, {}, {} ]
До сих пор у меня есть эта идея Я знаю, что мне нужно импортировать файл json и повторять его, но каждый раз он выдает мне ошибку… Я пробовал искать по всей всемирной паутине, и до сих пор мой код не появился:
import json def main(): f = open("/Users/maltheschroderjakobsen/Desktop/coding/test/mat.json",) f = json.load(f) for key in f["navn"]: print (key) main()
Но каждый раз, когда я пробую что-то еще, это приводит меня к ошибке
Комментарии:
1. Пожалуйста, покажите код. Сказать, что вы получаете ошибку без каких-либо подробностей, просто слишком расплывчато
2. Теперь все в порядке 🙂
Ответ №1:
f
похоже, это список, а не словарь:
for dct in f: if "navn" in dct: # the elements are dicts! print(dct["navn"])
Ответ №2:
Это потому, что в некоторых диктантах нет ключа navn
. Используйте dict.get
вместо этого:
import json def main(): file = open("/Users/maltheschroderjakobsen/Desktop/coding/test/mat.json",) data = json.load(file) for dct in data: print(dct.get("navn", "")) main()
Комментарии:
1. Большое спасибо 🙂
Ответ №3:
Пока в JSON есть только диктанты, вы можете сделать:
js=''' [ {"navn": "Traktor", "år": 10, "købspris": 10000}, {"navn": "Bil", "år": 20, "købspris": 100000}, {}, {} ]''' import json gt;gt;gt; [e['navn'] for e in json.loads(js) if e.get('navn', '')] ['Traktor', 'Bil']
JSON также может иметь другие типы данных, такие как списки или цифры. Если в JSON есть возможность чего-то другого, кроме a dict
, вы можете сделать:
[e['navn'] for e in json.loads(js) if isinstance(e, dict) and e.get('navn', '')]