私は基本的に辞書のリストの周りに精巧なラッパーを持っています:
class Wrapper(object):
def __init__(self, data):
self.data = data
def get(self, attr):
return [d[attr] for d in self.data]
それで、
Wrapper([{'x': 23}, {'x': 42}, {'x': 5}]).get('x')
を返します[23, 42, 5]
。ここで、省略形のプロパティを割り当てたいので、 。Wrapper.x
と同じように返されWrapper.get('x')
ます。data
演繹的にどのキーが存在するかわからないので、私の現在のアプローチは(この質問から適応:
class Wrapper(object):
def __init__(self, data):
self.data = data
for key in data[0].keys():
setattr(self, key, property(lambda self: self.get(key)))
したがって、データのすべての要素が同じキーを持ち、それらはすべてPythonで有効な識別子であると想定されます。しかし、その後、Wrapper(...).x
私は<property at 0x10a3d4838>
何を間違っているのですか?