私は辞書とユーザーがいて、uidの後に名前が付けられ、電子メール、名前などの情報が含まれている別の辞書があるとします。名前を検索したいと思っていて、uidを取得したいとします。それを行うための元気な方法?辞書で値を検索しますか?
辞書構造の例:
users = {1: {"name": "John Doe", "email": "[email protected]"},
2: {"name": "Jane Doe", "email": "[email protected]"}}
私は辞書とユーザーがいて、uidの後に名前が付けられ、電子メール、名前などの情報が含まれている別の辞書があるとします。名前を検索したいと思っていて、uidを取得したいとします。それを行うための元気な方法?辞書で値を検索しますか?
辞書構造の例:
users = {1: {"name": "John Doe", "email": "[email protected]"},
2: {"name": "Jane Doe", "email": "[email protected]"}}
[uid for uid, attrs in users.items() if attrs['name'] == name_you_are_looking_for]
修正しました。気にしないでください。 –
@ NiklasB。 'iteritems'は大丈夫ですか? –
ええ、Py3では削除されているので、上位互換性のためにSOで 'items'を使う傾向があります。同じことが 'xrange'の代わりに' range'にも適用されます。 –
、あなたのニーズを満たしていないだけで、この辞書の形式を使用して、クエリのこれらの種類をたくさん行っている場合。
検索するフィールドごとに1つの辞書を持つか、sqliteのようなリレーショナルソリューションを使用することを検討してください。
これは、より理解しやすいだろう:
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
あなたのdictsの正確なレイアウトを表示することができますか? –
たとえば、同じ構造の辞書を作成するコードをいくつか表示できますか?それは、{1:{"name": "John Doe"、 "email": "[email protected]"}、2:{"name": "Jane Doe"、 "email": "janedoe @ gmail.com "}} –
@DavidRobinsonそのサンプルは正しいです、より具体的ではないことを申し訳ありません。 – user1246337