我創建了以下字典:
Book_list={
'Fiction': {1001: ['Pride and Prejudice', 'available'],
1002: ['Fahrenheit 451', 'available']},
'Horror': {2001: ['House of leaves', 'available'],
2002: ['The Shinking', 'available']}}
現在我想用它的鍵將“可用”的狀態存盤在一個變數中,以便它可以進一步用于洗掉或更新。
所以我的意思是輸出是這樣的:
status={1001:available,1002:available,2001:available,2002:available}
請告訴我如何獲得此輸出來幫助我。
uj5u.com熱心網友回復:
一種方法是使用字典理解:
rs = {ii : status for category in Book_list.values() for ii, (name, status) in category.items() if status == "available"}
print(rs)
輸出
{1001: 'available', 1002: 'available', 2001: 'available', 2002: 'available'}
以上等價于以下嵌套的 for 回圈:
for category in Book_list.values():
for ii, (name, status) in category.items():
if status == "available":
rs[ii] = status
用于理解解包運算式,例如:
# _, category
# ii, (name, status)
你可以閱讀這個鏈接。對于 Python 資料結構的一般介紹,我建議閱讀檔案。
uj5u.com熱心網友回復:
def receive_available_books(Book_list):
status = {}
for cat in Book_list.values():
for code, book in cat.items():
status[code] = book[1]
return status
輸出:
{1001: 'available', 1002: 'available', 2001: 'available', 2002: 'available'}
uj5u.com熱心網友回復:
使用 Python 3.10 的結構模式匹配,可能對此不太合適/有用,但我只是想嘗試一下:-)
rs = {}
for category in Book_list.values():
for item in category.items():
match item:
case ii, [_, 'available' as status]:
rs[ii] = status
(代碼改編自 Dani 的)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327039.html
