python字典嵌套数组
时间: 2025-06-30 14:11:03 浏览: 13
在 Python 中处理包含嵌套数组的字典结构,可以通过多种方式实现,具体取决于数据的具体形式和所需操作。如果目标是从嵌套结构中提取数据并将其转换为更扁平的形式(例如用于分析或写入表格),`pandas.json_normalize()` 是一个非常强大的工具 [^1]。
### 从嵌套字典中提取数据
假设有一个如下所示的嵌套字典:
```python
data = {
"user": [
{"id": 1, "details": {"name": "Alice", "age": 25}},
{"id": 2, "details": {"name": "Bob", "age": 30}},
{"id": 3, "details": {"name": "Charlie", "age": 35}}
]
}
```
若想将 `"user"` 列表中的每个字典转换成 `DataFrame` 的行,并展开 `"details"` 字段,可以使用以下代码:
```python
import pandas as pd
df = pd.json_normalize(data['user'], record_path=None)
print(df)
```
输出结果将是:
```
id details
0 1 {'name': 'Alice', 'age': 25}
1 2 {'name': 'Bob', 'age': 30}
2 3 {'name': 'Charlie', 'age': 35}
```
为了进一步展开 `"details"` 字段,可以指定 `record_path` 和 `meta` 参数来提取子字段 [^1]。
### 处理列表推导式进行过滤
如果需要对嵌套数组中的元素执行条件筛选,可以使用列表推导式或字典推导式。例如,从一个列表中提取奇数的平方值 [^3]:
```python
my_list = [2, 3, 5, 7, 11]
squared_list = [x**2 for x in my_list if x % 2 != 0]
print(squared_list) # 输出 => [9, 25, 49, 121]
```
对于字典推导式,也可以类似地筛选并生成键值对:
```python
squared_dict = {x: x**2 for x in my_list if x % 2 != 0}
print(squared_dict) # 输出 => {3: 9, 5: 25, 7: 49, 11: 121}
```
### 合并多个迭代对象
如果需要遍历多个嵌套数组并按顺序组合它们,可以使用 `zip()` 函数。例如,合并两个列表并生成元组对 [^4]:
```python
for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']):
print(item)
```
输出结果将是:
```
(1, 'sugar')
(2, 'spice')
(3, 'everything nice')
```
### 使用 Pandas 将 JSON 数组加载到 DataFrame
如果数据以 JSON 格式存储,并且希望将其转换为 `DataFrame`,可以使用 `json.loads()` 或 `json.load()` 读取数据,然后使用 `pandas.DataFrame()` 创建数据框 [^2]:
```python
import json
import pandas as pd
json_array = '''
[
{"id": 1, "name": "Alice", "age": 25, "city": "New York"},
{"id": 2, "name": "Bob", "age": 30, "city": "Chicago"},
{"id": 3, "name": "Charlie", "age": 35, "city": "San Francisco"}
]
'''
data = json.loads(json_array)
df = pd.DataFrame(data)
print(df)
```
输出结果将是:
`` id name age city
0 1 Alice 25 New York
1 2 Bob 30 Chicago
2 3 Charlie 35 San Francisco
```
###
阅读全文
相关推荐


















