Jak wypisać te same elementy pliku .JSON?

0

Cześć,
Mam pytanie żółtodzióba. Jak zrobić program, który pyta się użytkownika o Imię, a następnie wypisze wszystkie domy dla tego użytkownika?
Np. Jak użytkownik wpisze Bob, to powinien dostać printa: River Forest, a jak Steve to tylko Hils.
Używam takiego szablonu plik .json. Naprawdę nie mam pomysłu jak odczytać w pythonie te dane. Byłbym wdzięczny za każdą pomoc. I proszę nie zjadajcie mnie, nie znam się zabardzo na tym języku programowania.

[
  {
  "name": "Bob",
  "house": "River"
  }, 
  {
  "name": "Steve",
  "house": "Hils"
  },
  {
  "name": "Bob",
  "house": "Forest"
  }
]

0

Wydaje się, że ten fragment spełnia swoją funkcję.

 with open('test.json', 'r') as f:
    distros_dict = json.load(f)
x=[]
for x in distros_dict:
    if x["name"]== str("Bob"):
        print(x["house"])
4

Możesz sobie ręcznie przelecieć pętlą przez listę albo poczytać o JMESPath - języku zapytań dla JSON. Z zewnętrznym pakietem jmespath wygląda to tak:

>>> import jmespath
>>> 
>>> data = [{'name': 'Bob', 'house': 'River'}, {'name': 'Steve', 'house': 'Hils'}, {'name': 'Bob', 'house': 'Forest'}]
>>> 
>>> pattern = "[?name=='{name}'].house"
>>>
>>> jmespath.search(pattern.format(name="Bob"), data)
['River', 'Forest']
>>> jmespath.search(pattern.format(name="Steve"), data)
['Hils']

2

Możesz też tak:

data = [...]

houses = [ x['house'] for x in data if x['name'] == 'Bob' ]

1 użytkowników online, w tym zalogowanych: 0, gości: 1