3

辞書の n タプルがあります。特定のキーと値のペアを含むこのタプルから辞書を取得したいと考えています。

私はこれを可能な限りエレガントにしようとしていますが、リスト内包表記が最適な方法だと思いますが、これは基本的なリスト内包表記ではなく、少し迷っています。

これは私がやろうとしていることのアイデアを示していますが、もちろんうまくいきません:

# 'data' is my n-tuple
# 'myKey' is the key I want
# 'myValue is the value I want

result = [data[x] for dictionary in data if (data[x][myKey]) == myValue)][0]

# which gives this error:

NameError: global name 'x' is not defined

以前、私はこのようなことを試みていました (エラーは理にかなっており、理解しています):

result = [data[x] for x in data if (data[x][myKey] == myValue)][0]

# which gives this error:

TypeError: tuple indices must be integers, not dict

これはネストされた内包表記を使用する時ですか? それはどのようなもので、その時点でループと条件付きで書き出す方が簡単でしょうか?

また、副次的な質問 - 最後に [0] を平手打ちする以外に、リスト内の最初の (または唯一の) 要素を取得するより Pythonic な方法はありますか?

4

3 に答える 3