将字典转换为对象,在Python中将键作为对象的名称

时间:2018-01-02 22:26:29

标签: python class oop object dictionary

我有这样的字典:

d = {'item1': ('Hi', (150, 495)), 'item2': ('Hola', (590, 40))}

我希望尽可能递归地将其转换为object。我有一节课:

class Item:
    def __init__(self,thetuple):
    self.greeting=thetuple[0]
    self.coordinate=thetuple[1]

所以我想要的是,应该有一个对象,例如item1,而item1.greeting是" Hi",item1.coordinate是(150,495)等。

我对各种解决方案,改进和想法持开放态度。感谢。

1 个答案:

答案 0 :(得分:1)

您正在寻找collections.namedtuple

所以做这样的事情:

import collections

Item = collections.namedtuple('Item', ('greeting', 'coordinate'))

d = {'item1': ('Hi', (150, 495)), 'item2': ('Hola', (590, 40))}

new_d = {k: Item(*v) for k, v in d.items()}

# Now you can do

new_d['item1'].greeting == 'Hi'

new_d['item2'].coordinate == (590, 40)