2017-03-18 6 views
1

私は大きな文字列のキーを持つ大きな辞書を持っています。各キー値のペアは、同じ形式です。次を使用して:私は頻繁に構造(値のペアは重要ではありませんキーがを):検証するためのいずれかの値をプリントアウトする必要が終わるキーが不明なときに辞書の値にアクセスする簡潔な方法

my_dict[list(my_dict.keys())[ARBITRARY INDEX]] 

より雄弁が存在しなければならないように私は感じますこれを行う方法は、任意のアイデア?

+0

恣意的にはどういう意味ですか? –

+0

@ juanpa.arrivillagaタイトルを編集しました。 「任意」の意味で任意であり、すなわち、どのような価値があるかは問わない。 – timgeb

+0

@ juanpa.arrivillaga、私はもともと恣意的な言葉を避けていました。なぜなら、それについての同様の質問は、「変化する可能性のある所与の価値」の意味でそれを使用していたからです。私は「実際の価値が不明な値」を伝えたいと思っていました。 – NoahL

答えて

4

、あなたは

next(iter(d.values())) 

でメモリ効率的な方法で任意の値を取得することができます何の値、StopIterationをキャッチするヘルパー関数でそれをラップし、すなわち:

def get_arb_value(dic): 
    try: 
     return next(iter(dic.values())) 
    except StopIteration: 
     # do whatever you like 

next(iter(dic.values()))のPythonの2と同等のnext(dic.itervalues())ないだろう。

+0

'next'はデフォルト値を取るので、' try-except'でラップする必要はありません。 'next(iter([])、None)' –

+1

確かに、私はOPがその場合にどんなことをしたいのか分かりません。ただ単に何かを返すよりも 'except'ブロックにもっと多くのロジックを置くことができます。 – timgeb

+0

間違いなし。 –

2

あなたは、単にこれを行うことができます。つまり

list(d.values())[0] 

を、最初の1を取り、リストに変換し、すべての値をとります。あなたは(dict.valuesが本格的なリストを返しません)のPython 3を使用しているので辞書を持っているかもしれないという可能性がある場合

+0

これは読んだので、これはとても分かりやすいようです。実際にキーに触れる理由は全くありません。 – NoahL

+0

timgebのソリューションは、特に大きな辞書を使用すると、おそらくより良いでしょう。 –

関連する問題