JSON 構造をデコードし、一致するものが見つかるまですべての辞書をループする必要があります。
for person in json.loads(user_stream):
if person['name'] == user:
id = person['id']
break
else:
# The else branch is only ever reached if no match was found
raise ValueError('No such person')
複数のルックアップを行う必要がある場合は、dict
ルックアップを容易にするために、この構造を に変換することをお勧めします。
name_to_id = {p['name']: p['id'] for p in json.loads(user_stream)}
次に、id
直接検索します。
id = name_to_id.get(name) # if name is not found, id will be None
上記の例では、名前が一意であると想定しています。そうでない場合は、次を使用します。
from collections import defaultdict
name_to_id = defaultdict(list)
for person in json.loads(user_stream):
name_to_id[person['name']).append(person['id'])
# lookup
ids = name_to_id.get(name, []) # list of ids, defaults to empty
これはいつものようにトレードオフであり、速度のためにメモリをトレードオフします。