Python 使用for循环从字典中的字典中提取项
我想用for循环将dictionary中的dictionary元素附加到列表中,但i[“fruit”]看起来像一个索引。我该怎么修理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'] } }
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']