我正在从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
但是那不会给我我想要的东西。如何设置它以便为我提供所提供网站的密码?
答案 0 :(得分:1)
首先让我们像这样重组您的字典,以便将其作为每个键作为网站的字典,就像您似乎在代码中对待它一样:
entries = {
'yahoo': {'username': 'jblumberg', 'password': 'sdkljfhwe'},
'google': {'username': 'jblumberg1', 'passwprd': 'CoIushujSetu'}
}
现在,您对原始代码进行了一些更改,使我们了解了应该起作用的地方:
if website in entries:
encrypted_password = entries[website]['password']
我应该注意website in entries
和website 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'