我有一本字典:

d = {'time': {36.0: 'mo'}, 'amount': {200.0: '$'}}


每个键(例如“时间”)只有一个值(例如{36.0'mo'})

我想通过以下方式访问36.0

result = d.time


和200.0做

result = d.amount


我该怎么做呢?到目前为止,我有:

class Bunch(object):
  def __init__(self, adict):
    self.__dict__.update(adict)

x = Bunch(d)
print x.time


产生{36.0:'mo'}而不是36.0。

最佳答案

在确保数据键和dict方法之间没有名称冲突之后,我将__getattr__子类化并覆盖dict

d = {'time': {36.0: 'mo'}, 'amount': {200.0: '$'}}

class Bunch(dict):
    def __getattr__(self, attr):
        try:
            val = self[attr]
            return next(iter(val))
        except KeyError:
            raise AttributeError(attr)

x =  Bunch(d)
x.time # 36.0

关于python - 用点表示法获取内部值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37926809/

10-12 18:57