亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何訪問嵌套字典中的特定鍵?

如何訪問嵌套字典中的特定鍵?

墨色風雨 2023-09-19 15:23:42
itemdetails = {101: { 'Item Name':'Tshirt', 'Price':150.00, 'Stock':20},                102: { 'Item Name':'Shirt', 'Price':300.00, 'Stock':20},                103: { 'Item Name':'Shorts', 'Price':450.00, 'Stock':20},                104: { 'Item Name':'Trousers', 'Price':750.00, 'Stock':20}} option = str(input("Press [C] for Item Code , [N] for Item Name: ")) if option=='n':         itemname=(input("Enter Item name: "))         print(itemdetails[itemname]) #====> how to access ??? else:         itemcode=int(input("Enter Item code: "))         print(itemdetails[itemcode])#當我輸入 itemname 時,我希望它列出該特定項目名稱的整個子詞典,例如,如果我輸入 Tshirt,我想輸出 =====> 101: { 'Item Name':'Tshirt', '價格':150.00,'庫存':20}那可能嗎?
查看完整描述

4 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

你可以這樣做:


itemdetails = {101: { 'Item Name':'Tshirt', 'Price':150.00, 'Stock':20},

                102: { 'Item Name':'Shirt', 'Price':300.00, 'Stock':20},

                103: { 'Item Name':'Shorts', 'Price':450.00, 'Stock':20},

                104: { 'Item Name':'Trousers', 'Price':750.00, 'Stock':20}}



 option = str(input("Press [C] for Item Code , [N] for Item Name: "))

 if option=='n':

         itemname=(input("Enter Item name: "))

         print(list(filter(lambda item: item['Item Name'] == itemname, itemdetails))[0])

 else:

         itemcode=int(input("Enter Item code: "))


         print(itemdetails[itemcode])


查看完整回答
反對 回復 2023-09-19
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

我認為字典理解會在這里完成工作,如下所示:


itemdetails = {101: { 'Item Name':'Tshirt', 'Price':150.00, 'Stock':20},

                102: { 'Item Name':'Shirt', 'Price':300.00, 'Stock':20},

                103: { 'Item Name':'Shorts', 'Price':450.00, 'Stock':20},

                104: { 'Item Name':'Trousers', 'Price':750.00, 'Stock':20}}

in_val = 'Shorts'       

out = {key:val for key,val in itemdetails.items() if val['Item Name']==in_val}


print(out)

輸出:


{103: {'Item Name': 'Shorts', 'Price': 450.0, 'Stock': 20}}

這in_val是該項目的值Name field,將其更改為您想要的任何內容。


不確定您希望打印的垂直格式,但這種格式可能會完成我希望的工作:


第一個版本 - 更“奇特”的版本:


print('\n'.join([str(list(a.keys())[0])] + [str(item) for item in a[103].items()]))

輸出:


103

('Item Name', 'Shorts')

('Price', 450.0)

('Stock', 20)

第二個版本 - 更具可讀性(并且更容易根據需要進行微調):


for outer_key,outer_vals in a.items():

    print(f'outer key: {outer_key}')

    for inner_key,inner_val in outer_vals.items():

        print(f'inner_key: {inner_key}, inner_val: {inner_val}')

輸出:


outer key: 103

inner_key: Item Name, inner_val: Shorts

inner_key: Price, inner_val: 450.0

inner_key: Stock, inner_val: 20


查看完整回答
反對 回復 2023-09-19
?
浮云間

TA貢獻1829條經驗 獲得超4個贊

嘗試這個:


item = 'Tshirt'

print([{k:v} for k,v in itemdetails.items() if v['Item Name'] == item][0])

輸出


{101: {'Item Name': 'Tshirt', 'Price': 150.0, 'Stock': 20}}

-- 要打印兩位小數的價格,您需要從字典中提取值并打印它。


item = 'Tshirt'

x =[{k:v} for k,v in itemdetails.items() if v['Item Name'] == item][0]

print(x)

price = [v for v in x.values()][0]['Price']

print('Price: {:.2f}'.format(price))

輸出


{101: {'Item Name': 'Tshirt', 'Price': 150.0, 'Stock': 20}}

Price: 150.00


查看完整回答
反對 回復 2023-09-19
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

如果必須通過 itemname 作為鍵來訪問信息,那么您可能可以考慮更改 dict 結構并直接將 itemname 作為外鍵。但是,如果無法做到這一點,那么您可以創建一個單獨的字典來存儲每個項目名稱的 id 列表編號。然后只需選擇項目名稱的 id 并從原始列表中獲取所需的信息。否則,您將必須遍歷主字典中的所有鍵,檢查是否有一個鍵以 itemname 作為鍵,然后返回其內容。



查看完整回答
反對 回復 2023-09-19
  • 4 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號