2

私は次のリストを持っています、

admin_extra = [
                {
                   'name': 'nikhil',
                    'passkey': 'nikhilpasskey' 
                },

                {
                    'name': 'mac',
                    'passkey': 'macpasskey' 
                },
             ]

リスト内の辞書をより良い方法で取得する方法は? 一致が見つからない場合はエラーを出力しますか?

私はやった

name = 'nikhil'

flag = 0

for admin in admin_extra:
    if admin['name'] == name:
        passkey = admin[passkey]
        flag = 1
        return passkey

if not flag:
    print "not found"

また、フラグロジックを排除したい

4

5 に答える 5

1

最も明白なアプローチは、breakステートメントを使用することです。

passkey = None

for admin in admin_extra:
    if admin['name'] == name:
        passkey = admin["passkey"]
        break

if passkey is None:
    print "not found"

または、リスト内包表記を使用します。

matching_admin_extras = [ae for ae in admin_extra if ae["name"] == name]

if len(matching_admin_extras)==0:
    print "not found"
elif len(matching_admin_extras)>1:
    print "multiple matches"
else:
    print matching_admin_extras[0]["passkey"]
于 2013-08-20T12:11:17.567 に答える
0
filtered=[item['passkey'] for item in admin_extra if item['name'] == name]
return filtered[0] if filtered else 'not found'
于 2013-08-20T12:18:18.540 に答える