在我的GAE应用程序中,我想创建一个JDOQL,它返回一个List,其中每个元素最多只存在一次,即使在数据库中还有更多。我怎么能这样做?
答案 0 :(得分:0)
我不了解JDOQL,但是如果你想要一个列表,其中每个实体最多存在一次,即每个列表元素都是唯一的,那么你可以执行以下操作:
假设您有一个我们称之为Type的权限类型/模型类,其属性为att1,attr2。 您希望基于一个或多个属性获得一个唯一元素列表,例如attr2。
你可以使用我从这个问题的良好来源改编的以下方法:
def unique(seq, idfun=None): ''' A function that returns a list of unique items in a very efficient manner Refer to : http://www.peterbe.com/plog/uniqifiers-benchmark ''' # order preserving if idfun is None: def idfun(x): return x seen = {} result = [] for item in seq: marker = idfun(item) # in old Python versions: # if seen.has_key(marker) # but in new ones: if marker in seen: continue seen[marker] = 1 result.append(item) return result
要从数据存储区类型获取基于attr2的类型的唯一元素列表,我可以执行以下操作:
list = Type.all() unique_list = unique(list,lambda t: t.attr2)
希望这有帮助,因为到目前为止它一直是我最好的方法。