python将sql结果转换为树层次结构

时间:2011-01-11 18:23:55

标签: python iteration

我有一个SQL查询,每行返回3个数据链级别(即国家,县,市)。每个国家可能有1个以上的县,每个县可能有1个以上的城市。

结果集:     “英国”“兰开夏郡”“伯恩利”     “英国”“兰开夏郡”“布莱克本”     “英国”“默西塞德郡”“利物浦”     “英国”“西约克郡”“利兹”     “英国”“西约克郡”“约克”

我如何在python中迭代结果集来创建类似的东西:

UK
->Lancashire
->->Burnley
->->Blackburn
->Merseyside
->->Liverpool
->West Yorkshre
->->Leeds
->->York
在php中我会做类似的事情:

while($row = $rec->fetch_object()) {
    $var[$row->country]['county'][$row->county]['city'][$row->city] = $row->city;
}

1 个答案:

答案 0 :(得分:2)

这不太理想,因为它有点模糊。

ccc = defaultdict( lambda: defaultdict( list ) )
for row in cursor.fetchall():
    country, county, city = row
    ccc[country][county].append(city)

可能有更简洁的方法来做到这一点。