是否可以通过python中的字典创建对象,使得每个键都是该对象的属性?
像这样:
d = { 'name': 'Oscar', 'lastName': 'Reyes', 'age':32 }
e = Employee(d)
print e.name # Oscar
print e.age + 10 # 42
当然,是这样的:
class Employee(object):
def __init__(self, initial_data):
for key in initial_data:
setattr(self, key, initial_data[key])
更新资料
正如布伦特·纳什(Brent Nash)所建议的那样,您还可以通过允许使用关键字参数来使其更加灵活:
class Employee(object):
def __init__(self, *initial_data, **kwargs):
for dictionary in initial_data:
for key in dictionary:
setattr(self, key, dictionary[key])
for key in kwargs:
setattr(self, key, kwargs[key])
然后您可以这样称呼它:
e = Employee({"name": "abc", "age": 32})
或像这样:
e = Employee(name="abc", age=32)
甚至像这样:
employee_template = {"role": "minion"}
e = Employee(employee_template, name="abc", age=32)
用于自定义云管平台中常用菜单的显示名称。 该功能用于自定义系统菜单名称,全局生效,修改后系统菜单以及与菜单项有关的参数都以当前值显示为准。 目前支持修改的菜单项有认证源、域、组、用户、项目、角色、权限。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “系统配置/全局设置/字典设置” 菜单项,进入字典设置页面。 字典设置 在字典列表中,单击key对应的当前值图标,弹性修改当前值对话框
问题内容: 鉴于Python的动态性,如果无法实现,我会感到震惊: 我想更改的实现。 我试图简单地写成这样: 但这告诉我。 这是防止我做可能(可能)愚蠢的事情的好尝试,但是我真的很想继续做下去。我怀疑解释器有某种可以修改的查找表,但我在Google上找不到类似的表。也不起作用- 它返回了与只读属性完全相同的错误。 我很想寻找一个Python 2.7解决方案,如果那很重要的话,尽管没有理由拒绝抛出适
问题内容: 我将大约400万个不同的键放入Python字典中。创建此字典大约需要15分钟,并且会消耗我的计算机上大约4GB的内存。完全创建字典后,查询字典很快。 我怀疑字典的创建会消耗大量资源,因为字典经常被重新整理(因为字典的数量巨大地增长)。是否可以在Python中创建具有一些初始大小或存储桶编号的字典? 我的字典从数字指向一个对象。 问题答案: 对于性能问题,总是最好进行衡量。以下是一些时间
问题内容: 我有一个看起来像这样的csv: 我想制作一个以类别为键的字典,并以剩余数据作为值的字典列表。所以它看起来像这样: (此处缩进以提高可读性)。 我像下面的代码片段一样尝试了一下,但是到那儿我什么也没得到: 问题答案: 使用:
问题内容: 在Python上进行迭代时从字典中删除项目是否合法? 例如: 这个想法是从字典中删除不满足特定条件的元素,而不是创建一个新字典,该字典是正在迭代的字典的子集。 这是一个好的解决方案吗?有没有更优雅/更有效的方法? 问题答案: 此答案不适用于,并且会给出。 :字典在迭代过程中更改了大小。 发生这种情况是因为返回的是迭代器而不是列表。正如评论中指出的那样,只需将其转换为列表即可,它应该可以
我有两本字典Dict1和DICT2。Dict1中每个键的值如下所示: 但是Dict2由键组成,这些键是DICT1中的值。DICT2中的值是由元组组成的列表,如下所示。 我得到的当前输出是 我想要的输出应该是字典式的: