如何在列表外获取多个嵌套键

2024-05-15 19:58:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图打印出列表中的一些嵌套键。下面是我的清单

my_list = [
'url',
 100,
 [{'food1': 'sushi',
   'food2': 'tajine',
   'fruit': {'desert': {'sweet': 'tiramusi'}, 'exotic': 'mango'}},
  {'food1': 'rice',
   'food2': 'tajinev',
   'fruit': {'desert': {'sweet': 'ice-cream'}, 'exotic': 'banana'}},
  {'food1': 'tajine',
   'food2': 'burger',
   'fruit': {'desert': {'sweet': 'cheesecake'}, 'exotic': 'pineapple'}}]]

现在我的目标是打印以下内容:

  1. 我要所有的exotics fruits
  2. 我要所有的sweet inside deserts

这是我的代码:

for x in my_list:
    print(x[2][0]['fruit']['exotic']) #<--- these are the exotic fruits
    print(x[2][0]['desert']['sweet']) #<--- these are the sweet deserts

我收到以下错误:TypeError: 'int' object is not subscriptable

我的预期结果是:

mango
banana
pineapple
tiramisu
ice-cream
cheesecake

Tags: mylistbananasweetfruitcreamicepineapple
3条回答

你想用['fruit']['desert']['sweet']代替['desert']['sweet']

x=[
('url'), 100, [{'food1': 'sushi', 'food2': 'tajine', 
'fruit': {'exotic': 'mango', 'desert': {'sweet': 'tiramusi'}}}, 
{'food1': 'rice', 'food2': 'tajinev', 
'fruit': {'exotic': 'banana', 'desert': {'sweet': 'ice-cream'}}}, 
{'food1': 'tajine', 'food2': 'burger', 
'fruit': {'exotic': 'pineapple', 'desert': {'sweet': 'cheesecake'}}}]
]

print(*(map(lambda x:x['fruit']['exotic'],x[2])),sep="\n")
print(*(map(lambda x:x['fruit']['desert']['sweet'],x[2])),sep="\n")

这是正确的代码

# Original List

my_list = [
('url'), 100, 
[{'food1': 'sushi', 'food2': 'tajine', 'fruit': {'exotic': 'mango', 'desert': {'sweet': 'tiramusi'}}}, 
{'food1': 'rice', 'food2': 'tajinev', 'fruit': {'exotic': 'banana', 'desert': {'sweet': 'ice-cream'}}}, 
{'food1': 'tajine', 'food2': 'burger', 'fruit': {'exotic': 'pineapple', 'desert': {'sweet': 'cheesecake'}}}]
]

# Print All Exotic Fruits

for i in range(len(my_list)):
    
    print(my_list[2][i]['fruit']['exotic'])

# Print all Sweets
    
for i in range(len(my_list)):
    
    print(my_list[2][i]['fruit']['desert']['sweet'])

那是因为你迭代的地方不对。试试这个:

my_list = [
    ('url'), 100, [
        {'food1': 'sushi', 'food2': 'tajine', 
        'fruit': {'exotic': 'mango', 'desert': {'sweet': 'tiramusi'}}}, 
        {'food1': 'rice', 'food2': 'tajinev', 
        'fruit': {'exotic': 'banana', 'desert': {'sweet': 'ice-cream'}}}, 
        {'food1': 'tajine', 'food2': 'burger', 
        'fruit': {'exotic': 'pineapple', 'desert': {'sweet': 'cheesecake'}}}
    ]
]

for x in my_list[2]:
    print(x['fruit']['exotic']) #< - these are the exotic fruits
    print(x['fruit']['desert']['sweet']) #< - these are the sweet deserts

相关问题 更多 >