如何访问嵌套字典中的特定键?

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}


那可能吗?


墨色风雨
浏览 143回答 4
4回答

繁星点点滴滴

你可以这样做: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])

翻过高山走不出你

我认为字典理解会在这里完成工作,如下所示: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: 103inner_key: Item Name, inner_val: Shortsinner_key: Price, inner_val: 450.0inner_key: Stock, inner_val: 20

浮云间

尝试这个: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

交互式爱情

如果必须通过 itemname 作为键来访问信息,那么您可能可以考虑更改 dict 结构并直接将 itemname 作为外键。但是,如果无法做到这一点,那么您可以创建一个单独的字典来存储每个项目名称的 id 列表编号。然后只需选择项目名称的 id 并从原始列表中获取所需的信息。否则,您将必须遍历主字典中的所有键,检查是否有一个键以 itemname 作为键,然后返回其内容。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python