Python:关于GQuery结果集的DISTINCT(GQL,GAE)

Fed*_*les 7 python sql google-app-engine gql distinct

想象一下,您在Google App Engine数据存储区中有一个实体,为匿名用户存储链接.您希望执行以下SQL查询,该查询不受支持:

SELECT DISTINCT user_hash FROM links
Run Code Online (Sandbox Code Playgroud)

相反,你可以使用:

user = db.GqlQuery("SELECT user_hash FROM links")
Run Code Online (Sandbox Code Playgroud)

如何最有效地使用Python 来过滤结果,所以它返回一个DISTINCT结果集?如何计算DISTINCT结果集?

Ber*_*rst 5

恢复此问题以完成:

DISTINCT关键字已在1.7.4版中引入.

您可以在此处找到更新的GQL参考(例如Python).


unm*_*ted 3

集合是解决这个问题的好方法:

>>> a = ['google.com', 'livejournal.com', 'livejournal.com', 'google.com', 'stackoverflow.com']
>>> b = set(a)
>>> b
set(['livejournal.com', 'google.com', 'stackoverflow.com'])
>>> 
Run Code Online (Sandbox Code Playgroud)

关于第一个答案的一个建议是,集合和字典更擅长快速检索唯一结果,列表中的成员资格对于其他类型来说是 O(n) ,而 O(1) ,所以如果你想存储额外的数据,或者执行诸如创建提到的unique_results列表之类的操作,最好执行以下操作:

unique_results = {}
>>> for item in a:
    unique_results[item] = ''


>>> unique_results
{'livejournal.com': '', 'google.com': '', 'stackoverflow.com': ''}
Run Code Online (Sandbox Code Playgroud)