如何从数据存储模型创建嵌套字典?

时间:2011-02-02 13:59:18

标签: google-app-engine dictionary python datastore

我正在研究这个问题几天,我的想法来自这个模型:


class oceni(db.Model):
    user = db.UserProperty()
    weight = db.FloatProperty()
    item = db.StringProperty()

..以这种格式创建字典:


collection = dict()
collection = {
    'user1':{'item1':weight1,'item2':weight2..},
    'user2':{'item3':weight3,'item4':weight4..},
..}

..据我所知,这是:


kontenier = db.GqlQuery('SELECT * FROM oceni')

        kolekcija = dict()
        tmp = dict()
        lista = []
        for it in kontenier:
            lista.append(it.user)
        set = []
        for e in lista:
            if e not in set:
                set.append(e)
        for i in set:
            kontenier = db.GqlQuery('SELECT * FROM oceni WHERE user=:1',i)
            for it in kontenier:
                tmp[it.item]=it.weight
            kolekcija[i]=tmp



..但是这会创建一个字典,其中所有用户都拥有包含项目及其权重的相同字典。我知道这不是最蟒蛇的方式,但我是新手,所以我会渴望更多地了解这个问题。

1 个答案:

答案 0 :(得分:3)

我在这个代码段中使用了你的变量名称。

kontenier = db.GqlQuery('SELECT * FROM oceni')
kolekcija = {}
for it in kontenier:
    if it.user not in kolekcija:
        kolekcija[it.user] = {}
    kolekcija[it.user][it.item] = it.weight