查询字典时返回不同的值

时间:2019-03-26 19:26:34

标签: python dictionary

我正在从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

但是那不会给我我想要的东西。如何设置它以便为我提供所提供网站的密码?

4 个答案:

答案 0 :(得分:1)

首先让我们像这样重组您的字典,以便将其作为每个键作为网站的字典,就像您似乎在代码中对待它一样:

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()在这里做同样的事情。

答案 1 :(得分:1)

在您的数据概念中存在多个小问题:

第一个条目是一个列表。因此,您将无法调用“ .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

答案 2 :(得分:1)

您可以使用其他词典:

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

然后将发生以下情况:

>> website = 'yahoo'
>> entries[website]
>> {'username': 'jblumberg','password': 'sdkljfhwe'}

因此,如果您需要密码:

>> entires[website]['password']
>> 'sdkljfhwe'

答案 3 :(得分:0)

尝试:

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

输出:

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