私は消費者のリストを持っています:
API_CONSUMERS = [{'name': 'localhost',
'host': '127.0.0.1:5000',
'api_key': 'Ahth2ea5Ohngoop5'},
{'name': 'localhost2',
'host': '127.0.0.1:5001',
'api_key': 'Ahth2ea5Ohngoop6'}]
そして、私はホスト変数を持っています:
host = '127.0.0.1:5000'
したい:
- ホストが API_CONSUMERS のリストの値に含まれているかどうかを確認してから、
- ホストが存在する場合は、 を取得して他の
api_key
場所で使用します。
もともと私は次のようにホストの値をチェックしていました:
if not any(consumer['host'] == host for consumer in API_CONSUMERS):
#do something
api_key
しかし、とにかく各消費者をループする必要があることを取得するには、2 つを組み合わせたほうがよいことに気付きました。
for consumer_info in API_CONSUMERS:
if consumer_info['host'] == host:
consumer = consumer_info
if not consumer:
#do something
これを行う最善の方法は何ですか?私がやっていることは「pythonic」ではないように感じます。
解決
try:
api_key = next(d['api_key'] for d in consumers if d['host'] == host)
except StopIteration:
#do something