考虑以下python类:
class Event(Document):
name = StringField()
time = DateField()
location = GeoPointField()
def __unicode__(self):
return self.name
现在我创建一个事件列表:
x = [Event(name='California Wine Mixer'),
Event(name='American Civil War'),
Event(name='Immaculate Conception')]
现在我想通过搜索事件名称来添加唯一的事件。 这是如何用语法中的布尔值完成的?
以下内容不正确:
a = Event(name='California Wine Mixer')
if a.name in x(Event.name):
x.append(a)
答案 0 :(得分:3)
我认为你想要一个像“如果a.name 不在x(Event.name):”中的东西,可以写成
if not any(y.name == a.name for y in x):
...
但如果名称充当索引,最好使用字典来避免O(N)搜索时间和更复杂的界面。
event_list = [Event(name='California Wine Mixer'), ...]
event_dict = dict((b.name, b) for b in event_list)
# ignore event_list from now on.
....
a = Event(name='California Wine Mixer')
event_dict.setdefault(a.name, a)