[英]Return value from nested dictionary in Python
我正在嘗試通過用戶輸入從嵌套字典中獲取值。 問題在於嵌套字典具有通用名稱(d1、d1 等)。 用戶輸入姓氏,程序返回 email。
我知道這是基本的,所以我提前道歉。 這是我到目前為止所擁有的。
my_dict = {
'd1':{
'fname':'john',
'lname':'doe',
'age':'26',
'email':'jdoe@mail.com'
},
'd2':{
'fname':'mary',
'lname':'jane',
'age':'32',
'email':'mjane@mail.com'
}
}
lname = input("enter last name: ")
for emp in my_dict.items():
print(emp)
Output:
enter last name: john
('d1', {'fname': 'john', 'lname': 'doe', 'age': '26', 'email': 'jdoe@mail.com'})
('d2', {'fname': 'mary', 'lname': 'jane', 'age': '32', 'email': 'mjane@mail.com'})
這是一個 function,它將姓氏作為輸入,然后遍歷每個字典(鍵、值)對,並在匹配時立即返回 email:
def get_email_from_last_name(last_name):
for v in my_dict.values():
if v['lname'] == last_name:
return v['email']
lname = input("enter last name: ")
email = get_email_from_last_name(lname)
print(email)
印刷:
enter last name: doe
jdoe@mail.com
根據 OP 的評論,這是一個使用簡單元組的解決方案:
my_data = (
{
'fname':'john',
'lname':'doe',
'age':'26',
'email':'jdoe@mail.com'
},
{
'fname':'mary',
'lname':'jane',
'age':'32',
'email':'mjane@mail.com'
}
)
lname = input("enter last name: ")
for person in my_data:
if lname == person["lname"]:
print(person)
也可以按姓map,但那不一定是一對一的關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.