从嵌套Python字典中提取数据
我知道这里有一些类似的帖子,但是我尝试了每种解决方案,但没有一个适合我的场景 我有一本很复杂的字典,里面有很多列表和其他字典。看起来是这样的:从嵌套Python字典中提取数据,python,json,pandas,loops,dictionary,Python,Json,Pandas,Loops,Dictionary,我知道这里有一些类似的帖子,但是我尝试了每种解决方案,但没有一个适合我的场景 我有一本很复杂的字典,里面有很多列表和其他字典。看起来是这样的: data = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'results': [{'id': 'id1_value', 'label1': 'label1_value', 'label2': 'label2_value', 'fields': {'field1'
data = {'key1': 'value1',
'key2': 'value2',
'key3': 'value3',
'results': [{'id': 'id1_value',
'label1': 'label1_value',
'label2': 'label2_value',
'fields': {'field1': 'field1_value',
'field2': 'field2_value',
'field3': 'field3_value'},
'label3': 'label3_value',
'label4': 'label4'},
{'id': 'id2_value',
'label1': 'label1_value',
'label2': 'label2_value',
'fields': {'field1': 'field1_value',
'field2': 'field2_value',
'field3': 'field3_value'},
'label3': 'label3_value',
'label4': 'label4'}]}
我想创建一个数据框,从这个目录中提取某些值。具体来说,我想有以下内容:
身份证件
标签2
字段2
字段3
id1
label2_值
字段2_值
字段3_值
id2
label2_值
字段2_值
字段3_值
如果您不再使用像
x
这样的通用变量名,您可能会发现跟踪结构中的位置更容易:
for result in data['results']:
id_ = result['id']
label2 = result['label2']
fields = result['fields'] # Intermediate variable (note: no loop)
field2 = fields['field2']
field3 = fields['field3']
mylist.append([id_, label2, field2, field3])
你明白了。(同样在您的代码中,您使用x
有两个不同的目的,这肯定会带来惊喜。)
如果您的实际结构没有深入很多,您可能会发现编写起来更简单
...
field2 = result['fields']['field2']
它显示此值的路径,而不是使用中间变量。但这是一个品味问题。如果您不再使用像
x
这样的通用变量名,您可能会发现跟踪结构中的位置更容易:
for result in data['results']:
id_ = result['id']
label2 = result['label2']
fields = result['fields'] # Intermediate variable (note: no loop)
field2 = fields['field2']
field3 = fields['field3']
mylist.append([id_, label2, field2, field3])
你明白了。(同样在您的代码中,您使用x
有两个不同的目的,这肯定会带来惊喜。)
如果您的实际结构没有深入很多,您可能会发现编写起来更简单
...
field2 = result['fields']['field2']
它显示此值的路径,而不是使用中间变量。但是这是一个品味的问题。
data\u results
是一个字典列表,因此data\u results['id']
将失败。您应该在for循环中使用x
作为id=x['id']
等等。您的示例代码似乎既没有定义“body”也没有定义“byline”,而且(正如@alexis在下面指出的那样),重用像“x”这样的变量名会带来麻烦。。。。而且您的内部循环实际上没有使用“x”,这似乎是一个错误。data\u results
是一个字典列表,因此data\u results['id']
将失败。您应该在for循环中使用x
作为id=x['id']
等等。您的示例代码似乎既没有定义“body”也没有定义“byline”,而且(正如@alexis在下面指出的那样),重用像“x”这样的变量名会带来麻烦。。。。而你的内部循环实际上并没有使用“x”,这似乎是一个错误。你做到了!谢谢我想我盯着这个太久了。谢谢你的帮助,我成功了!谢谢我想我盯着这个太久了。谢谢你的帮助。