我正在嘗試撰寫一個函式,該函式采用給定鍵(User_ID)的值并回傳該值的完整字典。我知道這可以在不撰寫函式的情況下實作,但作為初學者,我正在嘗試用函式來建立我的知識。
我的資料是一個字典串列,如下所示:
[
{
"User_ID":"Z000",
"DOB":"01.01.1960",
"State":"Oregon",
"Bought":["P1","P2"]
},
{
"User_ID":"A999",
"DOB":"01.01.1980",
"State":"Texas",
"Bought":["P5","P9"]
}
]
我撰寫了以下函式,但我意識到這僅適用于字典,但我有一個字典串列。我怎樣才能讓它獲取User_ID值并回傳完整的字典,包括User_ID,和.DOBStateBought
def find_user(val):
for key, value in dict_1.items():
if val == key:
return value
return "user not found"
uj5u.com熱心網友回復:
您想遍歷串列并將UserID字典的 與輸入 UserID 進行比較:
def find_user(val, lsts):
for d in lsts:
if val == d['User_ID']:
return d
return "user not found"
然后
print(find_user('Z000', lsts))
印刷
{'User_ID': 'Z000',
'DOB': '01.01.1960',
'State': 'Oregon',
'Bought': ['P1', 'P2']}
和
print(find_user('000', lsts))
印刷
user not found
但是,如果您的資料如下:
d = { "Data": [{"User_ID":"Z000"},{"User_ID":"A999"} ]}
然后您可以將字典中的串列傳遞給函式,例如:
find_user('Z000', d['Data'])
回傳
{'User_ID': 'Z000'}
uj5u.com熱心網友回復:
如果您真的想為此任務撰寫一個函式,那么您的設計就在正確的軌道上,但需要進行修改以考慮到您擁有一個字典串列這一事實。像這樣的東西可能會起作用:
def find_user(userid):
for user_dict in big_list_of_user_dictionaries:
if user_dict['User_ID'] == userid:
return user_dict
但是,您最好創建一個新字典,其中每個鍵都是用戶 ID,每個值都是您的用戶資訊字典之一。您可以使用 Python 的字典推導來快速制作這樣的字典:
user_dict = {d['User_ID'] : d for d in big_list_of_user_dictionaries}
然后,您可以通過在 中查找任何用戶的 id 來找到任何用戶的用戶資訊字典user_dict,如下所示:
print(user_dict['Z000'])
uj5u.com熱心網友回復:
希望這段代碼對你有用。
def find_user(val):
for dict_key in l:
if dict_key["User_ID"] == val:
return dict_key
else:
return "User Not Found"
print(find_user("Z000"))
這里 l 是存盤所有字典的串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410041.html
標籤:
下一篇:為字典值分配分數
