我从程序中返回一个dict(s)列表,每个dict中都有相同的键,我想根据每个中的:value设置一个类属性列表。字典列表可以有多个相同的值
[
{"key":"value"},
{"key":"differentvalue"},
{"key":"value"},
{"key":"newValue"},
{"key":"newValue"}
]
现在我有一个像这样的课程
class DynamicAttributesFromDict:
def __init__(self, listed):
for i in range(len(listed)):
name = listed[i]["key"]
p = getattr(self, name, [])
p.append(listed[i])
setattr(self, name, p)
我这样做,所以我可以通过obj.newValue或obj.value等访问某些dicts列表。 这只是一个例子,列表中的实际词组更长,并且是从程序中创建的。
我应该首先使用hasattr来检查属性和要追加的getattr吗?
上述作品,但似乎很粗略
对python类有点新意,所以任何帮助都会受到赞赏
编辑:
我认为更好的表现
from pprint import pprint
listdict = [
{"key":"value", "difkey":"something"},
{"key":"differentvalue", "xkey":"yvalue"},
{"key":"value"},
{"key":"newValue"},
{"key":"newValue"}
]
class DynamicAttributesFromDict:
def __init__(self, listed):
for i in range(len(listed)):
name = listed[i]["key"]
p = getattr(self, name, [])
p.append(listed[i])
setattr(self, name, p)
f = DynamicAttributesFromDict(listdict)
pp(f.value)
pp(f.differentvalue)
pp(f.newValue)
答案 0 :(得分:0)
filter(lambda x: x['key'] == 'value', my_data)
输出一个生成器对象,该对象变成这样的列表:
[{'key': 'value'}, {'key': 'value'}]
或者我们可以进行列表理解:
[d for d in my_data if d['key'] == 'value']
我正在重读你的问题以确保我正确回答,而且我不确定我做了什么。如果你正在寻找别的东西,请告诉我。