我正在研究这个问题几天,我的想法来自这个模型:
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
..但是这会创建一个字典,其中所有用户都拥有包含项目及其权重的相同字典。我知道这不是最蟒蛇的方式,但我是新手,所以我会渴望更多地了解这个问题。
答案 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