dicts

2017-08-21 9 views
1

(Pythonの2.xの)名でalfabeticallyソートのみ一意のキーと値のペアを持つdictsのリスト、リストから辞書値yを経由してdictの値xを取得するにはどのように、名前が同様にユニークです:dicts

dictlist = [ 
    {'name': 'Monty', 'has': 'eggs'}, 
    {'name': 'Terry', 'has': 'bacon'}  
    ] 

私は与えられた名前が持っているものを名前で知りたい。以下の作品。

names = ['Monty', 'Terry'] 

print dictlist[names.index('Terry')]['has'] 

私はdictlistでの名前と同じ順番で名前だけと並行して、リストを作ったので、私は、リストのを利用することができます。 (私はループfornamesを記入することができますが、ここでは関係ありません)。

print next((d['has'] for d in dictlist if d['name'] == 'Terry'), None) 

をそれはdictlistは名前でソートされていない場合にのみ勧めします:hereから

は、とりわけ、私はこれを行うことができます知っています。

私はこれを行うためのより簡潔な方法がないかと思います。少なくとも最初の方法ほど読みやすいものが望ましいでしょうか?

答えて

5

私はリストを一切使用しません。私は代わりに辞書を使います。

dictlist = { 
    'Monty': {'has': 'eggs'}, 
    'Terry': {'has': 'bacon'}  
    } 

これは、あなたがそうのような名前で値を検索することができます:dictlist['Monty']['has']

リストを使用しなければならないなら、私はあなたに、ある良い解決策を持っていると思います。

関連する問題