我想将字典中的字典元素追加到带有for循环的列表中,但我[“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"]
答案 0 :(得分:0)
你的错误是你迭代dict_1['number_1'
- 它只返回该词典的键:
for item in dict_1['number_1']:
print item
fruit
no
如果您想迭代这些值,则需要添加.items()
:
for item, value in dict_1['number_1'].items():
print item
fruit ['banana']
no ['1']
因此,如果您只想要香蕉,请使用dict_1['number_1'].items()
重复字典,并将value
部分附加到列表中:
list1 = []
for item, value in dict_1['number_1'].items():
list1.append(value)
答案 1 :(得分:0)
你不仅可以直接获得''banana']'number_1',因为字典在python中是无序的,我们不知道哪个键,值对出现,这就是为什么我们不知道何时'将显示number_1',并将'number_2'作为第一个键值对。
无序词典有两种可能的解决方案:
第一个解决方案获得所有水果名称:
dict_1 = {"number_1": {"fruit": ['banana'],
"no": ['1']
},
"number_2": {"fruit": ['apple'],
"no": ['2']
}
}
for key,value in dict_1.items():
print(value['fruit'])
第二是
如果你特别想要香蕉然后首先检查密钥,因为我说字典是无序的。
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']