Python 使用for循环从字典中的字典中提取项

Python 使用for循环从字典中的字典中提取项,python,dictionary,Python,Dictionary,我想用for循环将dictionary中的dictionary元素附加到列表中,但i[“fruit”]看起来像一个索引。我该怎么修理 dict_1 = {"number_1": {"fruit": ['banana'], "no": ['1'] }, "number_2": {"fruit": ['apple'], "no": ['2'] } }

我想用for循环将dictionary中的dictionary元素附加到列表中,但i[“fruit”]看起来像一个索引。我该怎么修理

dict_1 = {"number_1": {"fruit": ['banana'],
                 "no": ['1']
                },
      "number_2": {"fruit": ['apple'],
                 "no": ['2']
                }
    }

list_1 = [i["fruit"] for i in dict_1["number_1"]]
print list_1
# print dict_1["number_1"]["fruit"]

您的错误是您重复了dict_1['number_1'——它只返回该字典的键:

for item in dict_1['number_1']:
    print item
fruit
no
如果还要迭代这些值,则需要添加
.items()

因此,如果您只想要香蕉,请使用
dict_1['number_1'].items()迭代字典,并将
值添加到列表中
部分:

list1 = []
for item, value in dict_1['number_1'].items():
    list1.append(value)

因为python中的字典是无序的,我们不知道出现了哪个键、值对,这就是为什么我们不知道何时会出现“number\u 1”,何时会出现“number\u 2”作为第一个键、值对

对于无序字典,有两种可能的解决方案:

第一个解决方案是获取所有水果名称:

二是

如果你特别想要香蕉,那么首先检查一下钥匙,因为正如我说的,字典是无序的

for key,value in dict_1.items():
    if key=='number_1':
        print(value['fruit'])
另一种解决方案是,如果不想检查密钥,则使用集合模块中的有序字典:

from collections import OrderedDict

my_dict=OrderedDict()
my_dict['number_1'] = OrderedDict()

my_dict['number_1']['fruit']=['banana']
my_dict['number_1']['no']=['1']



my_dict['number_2']=OrderedDict()
my_dict['number_2']['fruit']=['apple']
my_dict['number_2']['no']=['2']


print(list(list(my_dict.values())[0].values())[0])
输出:

['banana']

我知道,但我想提取dict_1的元素尝试
列出dict_1中k和v的元素。items()
你想要
['apple'],['banana']
还是只想要
数字的信息?这不清楚。我想要这个['banana'],只想要dict_1
from collections import OrderedDict

my_dict=OrderedDict()
my_dict['number_1'] = OrderedDict()

my_dict['number_1']['fruit']=['banana']
my_dict['number_1']['no']=['1']



my_dict['number_2']=OrderedDict()
my_dict['number_2']['fruit']=['apple']
my_dict['number_2']['no']=['2']


print(list(list(my_dict.values())[0].values())[0])
['banana']