我有20K对象和列表中提供的一组功能。我需要从每个对象中提取这些功能并将它们保存到字典中。每个对象有近100个功能。
例如:
# object1
Object1.Age = '20'
Object1.Gender = 'Female'
Object1.DOB = '03/05/1997'
Object1.Weight = '130lb'
Object1.Height = '5.5'
#object2
Object1.Age = '22'
Object1.Gender = 'Male'
Object1.DOB = '03/05/1995'
Object1.Weight = '145lb'
Object1.Height = '5.8'
#object3
....
我需要从每个对象中提取的功能列表:
features = ['Gender',
'DOB',
'Height']
我正在尝试为具有指定功能的每个对象准备字典,以便:
dict1 = {features[0]:Object1.features[0], features[1]:Object1.features[1], features[2]:Object1.features[2]}
dict2 = {features[0]:Object2.features[0], features[1]:Object2.features[1], features[2]:Object2.features[2]}
dict3 = ...
由于将来可能会更改功能列表,因此我需要使代码具有灵活性。我确定这不是我为每个对象准备字典的方式,但我写了这个来表明问题。
我怎样才能写出词典?
答案 0 :(得分:0)
使用包含getattr
电话的字典理解:
def get_features(obj, features):
return {f: getattr(obj, f) for f in features}
答案 1 :(得分:0)
字典理解
objdict = {feature: getattr(obj, feature) for feature in features}
您必须确保要素中的字符串与对象的属性名称匹配。
答案 2 :(得分:0)
获取字典列表:
features = ['Gender', 'DOB', 'Height']
your_objects = [Object1, Object2] # ...
list(map(lambda el: {f: getattr(el, f) for f in features}, your_objects))
由于您有很多对象,因此迭代地图对象而不将其转换为list
可能很方便。