我想把属性添加到列表中的所有对象(django中的模型实例)。例如,列表为:
persons = [
{"age":"12","name":"John"},
{"age":"10","name":"Joye"}
]
我们假设我想把person.age
的值放在person.number
中,我有一个新的列表,所有人都有新的属性number
,所以我的函数是:
new_persons_list=list(map(lambda person:setattr(person, 'number', person.age), persons))
但是输出是[None,None]
,而我期望输出是:
persons = [
{"age":12,"name":"John","number":12},
{"age":10,"name":"Joye","number":10}
]
如果可能的话,我不想在map
中添加新函数,我想使用拉姆达。什么有问题吗?谢谢
这没那么容易,所以使用:
setattr(..)
函数更新对象。大多数更新某些内容的函数都不会返回某些内容(这本身不是真的,但对于许多函数来说,这是成立的)。你知道吗因此,您的列表只是获取
setattr
调用的结果。我们可以通过以下方法来规避问题:但更合理的做法是,在这里使用
for
循环来更新对象:相关问题 更多 >
编程相关推荐