princelai
2021-01-19 11:15:10 +08:00
我试了试,只能循环转为 dataframe,之后查询就会快很多
```
d = {
'中学': {
'初一': {
'数学': [{
'id': 1,
'题目': 'xx',
'答案': 'xx'
},
{
'id': 2,
'题目': 'xx',
'答案': 'xx'
}
]
},
'初三': {
'语文': [{
'id': 3,
'题目': 'xx',
'答案': 'xx'
},
{
'id': 4,
'题目': 'xx',
'答案': 'xx'
}
]
}
},
'小学': {
'三年级': {
'英语': [{
'id': 5,
'题目': 'xx',
'答案': 'xx'
},
{
'id': 6,
'题目': 'xx',
'答案': 'xx'
}
],
'体育': [{
'id': 7,
'题目': 'xx',
'答案': 'xx'
},
{
'id': 8,
'题目': 'xx',
'答案': 'xx'
}
]
},
'五年级': {
'美术': [{
'id': 9,
'题目': 'xx',
'答案': 'xx'
},
{
'id': 10,
'题目': 'xx',
'答案': 'xx'
}
]
}
}
}
trans = []
for title1_key,title1_val in d.items():
for title2_key,title2_val in title1_val.items():
for title3_key, title3_val in title2_val.items():
tmp_df = pd.DataFrame(title3_val)
tmp_df['title1'] = title1_key
tmp_df['title2'] = title2_key
tmp_df['title3'] = title3_key
trans.append(tmp_df)
df = pd.concat(trans)
```
查询的话,大数据量用 query 方法会更快一点
df.query('id==5')
Out[156]:
id 题目 答案 title1 title2 title3
0 5 xx xx 小学 三年级 英语
df.query("title2=='三年级' and title3=='英语'").id
Out[158]:
0 5
1 6