我需要一些帮助来解决我遇到的 Python 问题。我有一些来自 MySQL 数据库的数据,我想从中制作父/子字典。
我正在检索的数据包含两个值,名称和大小:那么我如何从这些值转到字典,如下所示。
{
"name": " ",
"children": [
{
"name": "HSC",
"size": 0.2,
"children": [
{
"name": "MPP",
"size": 15,
"children": [
{
"name": "CMP",
"size": 8,
"children": [
{
"name": "MEP",
"size": 6
},
{
"name": "GMP",
"size": 10,
"children": [
{
"name": "early PM",
"size": 2
}
]
}
]
}
]
}
]
}
]
}
我写了一些代码:
cur.execute('SELECT DISTINCT gene_data.gene_name, gene_data.mean FROM genes INNER JOIN gene_data ON genes.id = gene_data.g_id WHERE genes.name = %s AND genes.type = %s AND gene_data.probe_name = %s', (gene, types, probe))
rows = cur.fetchall()
cmap = {}
for row in rows:
entry = {'name': row[0], 'size': row[1], 'children':[]}
cmap[row[0]] = entry
for index, row in enumerate(rows):
item = cmap[row[0]]
if((index+2)>len(rows)):
parent = cmap.get( row[0], None )
parent["children"].append(item.copy())
if parent:
parent["children"].append(item.copy)
hrcy = parent["children"]
print hrcy
else:
next = rows[index+1]
nextItem = cmap[next[0]]
parent = cmap.get( row[0], None )
#parent["children"].append(nextItem.copy())
if parent:
parent["children"].append(nextItem.copy())
当我运行这段代码时,我只得到一行。我需要将每一行添加到以前的子元素中。