Python问题我有一个类的列表,如何删除重复项?

2024-09-24 22:32:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个应用程序引擎应用程序(这是一个简单的游戏任务系统):

所以我有一个单子

class Quest(db.Model):
  name = db.StringProperty()
# note: I made about 10 different quest entities ( quest1 to quest10)

class User(db.Model):
  completed_quests =  db.StringListProperty() # to store keys of completed quests

# note: I made some fake data showing that the user completed 3 quests.
# user.completed_quests =  ["key1","key2","key3"] - keys belong to the corresponding quests

所以我查询用户和他/她完成的任务。 用户=User.get_by_key_名称(用户ID)

然后对任务模型进行了查询 所有任务=任务。全部()

问题是:如何交叉检查user.completed_任务列出所有任务?在

我的目标:我想向用户展示一个网页,在那里他/她可以看到: -完成任务的列表和 -未完成的任务。在

我使用的方法是:

^{pr2}$

但对于我未完成的任务,我该怎么做呢?在


Tags: theto用户引擎应用程序dbmodelkeys
2条回答

您可以使用difference

all = set(quest.key() for quest in all_quests)
complete = set(completed_quests)
incomplete = all.difference(complete)

试试这样的方法:

quests = [(x.key(), x) for x in Quest.all.fetch(1000)]
incomplete_quests = [v for k, v in quests if k not in a_user.completed_quests]

为了简单起见,假设您首先将完成的任务列表转换为数据库列表属性(数据库键). 在

相关问题 更多 >