Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从嵌套Python字典中提取数据_Python_Json_Pandas_Loops_Dictionary - Fatal编程技术网

从嵌套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”,这似乎是一个错误。你做到了!谢谢我想我盯着这个太久了。谢谢你的帮助,我成功了!谢谢我想我盯着这个太久了。谢谢你的帮助。