Python中从列表综合搜索访问对象
我正在使用列表综合“搜索”来匹配employee类的对象。然后,我想根据匹配搜索的人为它们分配一个值 基本上,这相当于问谁喜欢三明治,然后给那个人一个三明治 这个钻头有效Python中从列表综合搜索访问对象,python,Python,我正在使用列表综合“搜索”来匹配employee类的对象。然后,我想根据匹配搜索的人为它们分配一个值 基本上,这相当于问谁喜欢三明治,然后给那个人一个三明治 这个钻头有效 class Employee(): def __init__(self, name, age, favoriteFood): self.name = name self.age = age self.favoriteFood = favoriteFood def __repr__(self):
class Employee():
def __init__(self, name, age, favoriteFood):
self.name = name
self.age = age
self.favoriteFood = favoriteFood
def __repr__(self):
return "Employee {0}".format(self.name)
employee1 = Employee('John', 28, 'Pizza')
employee2 = Employee('Kate', 27, 'Sandwiches')
myList = [employee1, employee2]
a = 'Sandwiches'
b = 'Tuna Mayo Sandwich'
matchingEmployee = [x for x in myList if x.favoriteFood == a]
print matchingEmployee
这将打印类中的“雇员凯特”repr
我现在坚持的是给凯特金枪鱼蛋黄酱三明治,b值
我希望做一些类似的事情
matchingEmployee.food = b
但这不会在该对象中创建一个新变量并将其值设为b
任何帮助都会得到很大的帮助 由于变量matchingEmployee是一个列表,并且在给定的上下文中,Kate是列表中的第一个,因此可以执行以下操作:
matchingEmployee[0].food = b
由于变量matchingEmployee是一个列表,并且在给定的上下文中,Kate是列表中的第一个,因此可以执行以下操作:
matchingEmployee[0].food = b
当我了解到列表会生成一个列表(听起来可能很愚蠢:),我添加了一个for循环来迭代匹配的员工列表,以便将三明治提供给想要的人
if matchingEmployee:
print 'Employee(s) found'
for o in matchingEmployee:
o.food = b
谢谢因为我知道列表会生成一个列表(听起来可能很愚蠢:)。我添加了一个for循环来迭代匹配的员工列表,以便将三明治提供给想要的人
if matchingEmployee:
print 'Employee(s) found'
for o in matchingEmployee:
o.food = b
谢谢如果您想将食物添加到与您的筛选器匹配的每个员工,您需要循环查看匹配的员工列表。 例如:
for employee in matchingEmployee:
employee.food = b
如果您想将食物添加到与您的筛选器匹配的每个员工,则需要循环查看匹配的员工列表。 例如:
for employee in matchingEmployee:
employee.food = b
使用命令行python编写简化表达式:
[ y for y in [1,2,3,4] if y %2 ==0]
您将看到它将产生一个列表输出
[2, 4]
您的“匹配员工”实际上是匹配员工的列表。因此,给第一个找到的员工“一个三明治”(假设有):
给员工名单上的“一个三明治”:
for employee in matchingEmployee:
employee.food = b
使用命令行python编写简化表达式:
[ y for y in [1,2,3,4] if y %2 ==0]
您将看到它将产生一个列表输出
[2, 4]
您的“匹配员工”实际上是匹配员工的列表。因此,给第一个找到的员工“一个三明治”(假设有):
给员工名单上的“一个三明治”:
for employee in matchingEmployee:
employee.food = b
matchingEmployee
是匹配的Employee
对象列表,而不是单个对象。这就是为什么它被称为列表理解;它将创建一个列表。感谢您的输入。您能否建议如何只返回一个结果。matchingEmployee
是匹配的Employee
对象列表,而不是单个对象。这就是为什么它被称为列表理解;它将创建一个列表。感谢您的输入。你能告诉我如何只返回一个结果吗?谢谢。这是可行的,但假设只有一个结果,我认为情况并非总是如此,它假设至少有一个结果。这是py列表上的一张小备忘单:谢谢。这是可行的,但假设只有一个结果,我认为情况并非总是如此,它假设至少有一个结果。这是py列表上的一张小备忘单:字面上比我快15秒,字面上比我快15秒。