以较不笨拙的方式从列表中选择一个Class对象

时间:2014-06-26 14:53:41

标签: python

我有一个自定义的类,比如,Man,(整个类名等等)和这些对象的列表men。我的目标是在此列表中搜索age属性为特定数字的任何对象,并对此对象执行操作。如果不存在这样的条目,我想制作一个。

现在,我知道我可以这样做:

for year in range(70):
    year_found = False
    if year in [m.age for m in men]:
        # do something
        year_found = True
    if not year_found:
        men.append(Man(age=year))

但使用year_found来保持数组中的位置似乎很笨拙。有没有人知道一个比类列表更好的数据结构,或者更方便的方法来解决这个问题?

2 个答案:

答案 0 :(得分:2)

您可以尝试使用next()

man_search = next((man for man in men if man.age == year), None)

if man_search is None:
    men.append(Man(age=year))
else:
    # do something

答案 1 :(得分:2)

你可能想要使用套装。

ages = set(m.age for m in men)
all_ages = set(range(70))
for age in (all_ages - ages):
    men.append(Man(age=age))