4 回答

TA贡献1802条经验 获得超5个赞
您正在寻找类的特殊方法。看看 __getattr__和__getitem__。您可以编写自己的课程。它的这一类的实例可以有 a,b并c作为属性,可以做你的描述。
这样的事情可能会做部分您想做的事情:
class DictCollcetion(object):
def __init__(self, dict_):
self.dict = dict_
def __getattr__(self, name):
return {k: k.name for k in self.dict}
def __getitem__(self, key):
return {k: k.key for k in self.dict}

TA贡献1802条经验 获得超10个赞
您是否考虑过仅使用集合?
my_set = {myclass(...),myclass(...),myclass(...)}
props = {k.prop for k in my_set}
虽然您可以创建一个为您完成映射的类,但对我而言,这并不比坚持使用标准映射结构更清楚您的代码。

TA贡献1829条经验 获得超6个赞
我遇到过像我一样操纵大量字典或对象的情况。通常,这些对象会从数据库中提取出来,并通过ORM进行填充,但我也使用CSV文件来完成。
我不确定我的需求是否足够频繁/常见,我是否会寻找一个模块来为其提供语法糖。
添加回答
举报