【发布时间】:2019-03-15 17:10:50
【问题描述】:
我试图在遍历包含嵌套字典和列表的字典列表时获取特定值。
这大致是我导入的 json 数据的样子(简化)。它是一个包含嵌套字典和嵌套列表的字典列表。
# What a single dictionary looks like prettified
[{ 'a':'1',
'b':'2',
'c':'3',
'd':{ 'ab':'12',
'cd':'34',
'ef':'56'},
'e':['test', 'list'],
'f':'etc...'
}]
# What the list of dictionaries looks like
dict_list = [{ 'a':'1', 'b':'2', 'c':'3', 'd':{ 'ab':'12','cd':'34', 'ef':'56'}, 'e':['test', 'list'], 'f':'etc...'}, { 'a':'2', 'b':'3', 'c':'4', 'd':{ 'ab':'23','cd':'45', 'ef':'67'}, 'e':['test2', 'list2'], 'f':'etcx2...'},{},........,{}]
这是我最初的代码,它只遍历字典列表。
for dic in dict_list:
for val in dic.values():
if not isinstance(val, dict):
print(val)
else:
for val2 in val.values():
print (val2)
我上面的原始代码中的打印语句只是为了向我展示从字典列表中提取的内容。我想要做的是声明我希望从顶级和二级字典和列表中获取哪些值。
这是我正在寻找的输出作为示例。
列表中每个顶级字典的第一个键的值。
top_level_dict_key1 = ['1','2']
2 级字典的所有值。
level2_dic = ['12', '34', '56', '23', '45', '67']
或特定值。在这种情况下,每个嵌套字典中第一个键的值
level2_dict = ['12', '23']
嵌套列表中第二个键的值
level2_list = ['test', 'test2']
希望这很清楚。如果你也需要我,我会尽力澄清。
【问题讨论】:
-
什么版本的 Python?在 3.7 之前,不保证字典有任何特定的顺序。
-
(顺便说一句,好的问题应该能够独立存在。如果您可以在不参考之前的问题的情况下对其进行编辑以使其有意义,那么任何试图帮助您的人都会更容易。)
-
目前是 Python 3.6,但我可以为我的项目的这一部分运行使用 3.7 的环境。该项目的其余部分将是深度学习,因此 3.7 可能不是一个好主意。
-
@JETM 我发布的内容几乎就是我的其他问题的全部内容。我回过头来稍微编辑了这个,但没有太多新信息。有什么我想念的东西需要澄清吗?我很乐意帮忙。
-
对您上一个问题的引用令人困惑。我看不到一个明确的问题。您可以删除所有关于以前有过这个问题的引用吗?
标签: python json dictionary