我在StackOverflow中找不到相关的问题,所以......
我的字典中填充了行星和恒星的数据:
dict = {'name': value, 'mass' : value, 'radius': value, etc..}
此词典的键与Planet和Star类的属性具有相同的名称,我将其值赋予。
我想要做的是在根据其他填充字段计算某些缺失的数据字段后,计算所有已填充的Star和Planet对象的缺失信息量...
有没有办法单步执行此词典的键并使用键所包含的字符串引用Star / Planet对象的属性?
类似于:
for planetObjs in planets:
for key in dict.iterkeys():
if planetObj.key == None:
countMissingDict[key] += 1
我如何引用key所持有的字符串,这是与Planet对象中属性相同的字符串?这可能吗?
答案 0 :(得分:3)
使用getattr
:
getattr(object, name[, default]) -> value
从对象获取命名属性;
getattr(x, 'y')
相当于x.y
。当给出默认参数时,它会在返回时返回 属性不存在;没有它,就会有例外 情况下
您可以将代码缩短为:
from collections import Counter
countMissingDict = Counter(key for planetObjs in planets for key in dic
if getattr(planetObjs, key) is None)
注意:请勿将dict
用作变量名称。
答案 1 :(得分:0)
您想使用getattr
。
for planetObj in planets:
for key in dict.iterkeys():
if getattr(planetObj, key) == None:
countMissingDict[key] += 1