【问题标题】:Converting dictionary to an object with keys as object's name in Python在 Python 中将字典转换为以键作为对象名称的对象
【发布时间】:2018-06-12 14:46:18
【问题描述】:

我有一本这样的字典:

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

我想将它转换为对象,如果可能的话递归。我有一堂课:

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

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

我乐于接受各种解决方案、改进和想法。谢谢。

【问题讨论】:

  • 递归?数据中没有任何递归......递归应该用于具有归纳性质的事物。
  • 这是对字典的简单迭代,从每个字典条目形成一个对象。你被困在哪里了?
  • @WillemVanOnsem 教授要求我们使用这本字典,并通过递归将每个键转换为函数中的一个对象。如果我理解正确,答案是数据中没有递归,因为我无法实现它。
  • @Prune 我完全卡在那个部分,我尝试迭代,但我一定做错了什么。

标签: python class oop object dictionary


【解决方案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)

【讨论】:

    猜你喜欢
    • 2013-08-23
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 2019-07-21
    • 2022-10-02
    • 2019-04-02
    • 2021-12-21
    相关资源
    最近更新 更多