2012-03-03 3 views
0

私は辞書とユーザーがいて、uidの後に名前が付けられ、電子メール、名前などの情報が含まれている別の辞書があるとします。名前を検索したいと思っていて、uidを取得したいとします。それを行うための元気な方法?辞書で値を検索しますか?

辞書構造の例:

users = {1: {"name": "John Doe", "email": "[email protected]"}, 
     2: {"name": "Jane Doe", "email": "[email protected]"}} 
+1

あなたのdictsの正確なレイアウトを表示することができますか? –

+0

たとえば、同じ構造の辞書を作成するコードをいくつか表示できますか?それは、{1:{"name": "John Doe"、 "email": "[email protected]"}、2:{"name": "Jane Doe"、 "email": "janedoe @ gmail.com "}} –

+0

@DavidRobinsonそのサンプルは正しいです、より具体的ではないことを申し訳ありません。 – user1246337

答えて

3
[uid for uid, attrs in users.items() if attrs['name'] == name_you_are_looking_for] 
+0

修正しました。気にしないでください。 –

+0

@ NiklasB。 'iteritems'は大丈夫ですか? –

+1

ええ、Py3では削除されているので、上位互換性のためにSOで 'items'を使う傾向があります。同じことが 'xrange'の代わりに' range'にも適用されます。 –

0

、あなたのニーズを満たしていないだけで、この辞書の形式を使用して、クエリのこれらの種類をたくさん行っている場合。

検索するフィールドごとに1つの辞書を持つか、sqliteのようなリレーショナルソリューションを使用することを検討してください。

0

これは、より理解しやすいだろう:

def get_uid(users, target): 
    for key in users.keys(): 
     if users[key].get("name") == target: 
      return key 

それを使用するには:

>>> print get_uid(users, "Jane Doe") 
... 2 
関連する問題