> ['5', '7', '12-6ren">
gpt4 book ai didi

python - 从存在属性的对象列表中收集属性

转载 作者:行者123 更新时间:2023-11-28 21:49:06 25 4
gpt4 key购买 nike

我下面的内容将遍历对象列表并收集和称为“年龄”的属性。

values = [ getattr(x.data, "age", "") for x in nodes ]
>> ['5', '7', '12']

但是,如果属性“age”不存在,则返回此

>> ['5', '', '7', '', '12']

我如何修改代码行以使生成的列表不包含空值。

最佳答案

生成后过滤列表:

values = [ getattr(x.data, 'age', '') for x in nodes ]
values = list(filter(bool, values)) # just filter(bool, values) in Python 2

或者在生成列表时过滤列表:

values = [ getattr(x.data, 'age') for x in nodes if hasattr(x.data, 'age')]

或者确实(来自 Hai Vu 的评论),如果 'age'不代表字符串变量,直接访问该字段而不使用 getattr .

values = [ x.data.age for x in nodes if hasattr(x.data, 'age')]

更新:

根据您的进一步问题,在 x.data.age 中, data.age 不是 x 的属性.
datax 的属性, 和 agex.data 持有的值的属性.如有必要,您可以检查归因的两个阶段:

values = [x.data.age for x in nodes if hasattr(x, 'data') and hasattr(x.data, 'age')]

关于python - 从存在属性的对象列表中收集属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34044255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com