如何通过对象属性搜索Python列表?
考虑以下python类:如何通过对象属性搜索Python列表?,python,list,Python,List,考虑以下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'),
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)
通过使用unique,我认为您需要类似于“如果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)
通过使用unique,我认为您需要类似于“如果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)
是的,我就是这个意思。谢谢是的,我就是这个意思。谢谢