查询字典时返回不同的值

2024-09-28 01:58:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从一本Python词典中提取。我把它设置成这样:

entries = [
    {'website': 'yahoo','username': 'jblumberg','password': 'sdkljfhwe'},
    {'website': 'google','username': 'jblumberg1','password': 'CoIushujSetu'}
    ]

我要求用户给我一个网站,这样我就可以返回密码如下:

def lookup_password(website):

    if website in entries.keys():
        encrypted_password = entries[website]

    return password_encrypt(encrypted_password, -encryption_key)

    pass

然而,这不会给我我想要的。我如何设置它给我提供的网站的密码值


Tags: 用户密码网站googleusernamepasswordwebsiteyahoo
3条回答

尝试:

def lookup_password(website):
    for entry in entries:
        if entry['website'] == website:
            return entry['password']

输出:

In[2]: lookup_password('google')
Out[2]: 'CoIushujSetu'

在您对数据的概念中有许多小问题:

第一个条目是一个列表。因此,您将无法调用“.keys()”

使用时也是如此

encrypted_password = entries[website]

这将存储整个词典。这意味着您可以通过['password']访问密码

encrypted_password = entries[website]['password']

恢复:如果你把数据改成这样

entries = {
'yahoo':{
    'username': 'jblumberg','password': 'sdkljfhwe'
},
'google':{
    'username': 'jblumberg1','password': 'CoIushujSetu'
},
}
def lookup_password(website):
    if website in entries:
        encrypted_password = entries[website]['password']
        return password_encrypt(encrypted_password, -encryption_key)

    pass

但是,如果你保留相同的数据,它必须如下所示:

def lookup_password(website):
    for record in entries:
        if record['website'] == website:
            encrypted_password = record['website']
            return password_encrypt(encrypted_password, -encryption_key)

    pass

首先,让我们像这样重新构造您的dict,以便它是一个带有每个键的dict,就像您在代码中对待它一样:

entries = {
    'yahoo': {'username': 'jblumberg', 'password': 'sdkljfhwe'},
    'google': {'username': 'jblumberg1', 'passwprd': 'CoIushujSetu'}
}

现在,对您的原始代码进行几处更改,我们就可以了解应该如何工作:

if website in entries:
    encrypted_password = entries[website]['password']

我应该注意到website in entrieswebsite in entries.keys()在这里做同样的事情

相关问题 更多 >

    热门问题