簡體   English   中英

從 Python 中的嵌套字典返回值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM