当前位置: 首页 > 面试题库 >

字典键的Javascript样式点表示法是非Python的吗?

毛德曜
2023-03-14
问题内容

我已经开始使用如下构造:

class DictObj(object):
    def __init__(self):
        self.d = {}
    def __getattr__(self, m):
        return self.d.get(m, None)
    def __setattr__(self, m, v):
        super.__setattr__(self, m, v)

更新:基于此线程,我将DictObj实现修改为:

class dotdict(dict):
    def __getattr__(self, attr):
        return self.get(attr, None)
    __setattr__= dict.__setitem__
    __delattr__= dict.__delitem__

class AutoEnum(object):
    def __init__(self):
        self.counter = 0
        self.d = {}
    def __getattr__(self, c):
        if c not in self.d:
            self.d[c] = self.counter
            self.counter += 1        
        return self.d[c]

其中DictObj是可以通过点表示法访问的字典:

d = DictObj()
d.something = 'one'

我觉得它比美观d['something']。请注意,访问未定义的键将返回None而不是引发异常,这也很好。

更新:Smashery很好,mhawke对其进行了扩展以提供更简单的解决方案。我想知道使用 dict
而不是定义新字典是否有任何不良后果;如果没有,我非常喜欢mhawke的解决方案。

AutoEnum是一个自动递增的Enum,用法如下:

CMD = AutoEnum()

cmds = {
    "peek":  CMD.PEEK,
    "look":  CMD.PEEK,
    "help":  CMD.HELP,
    "poke":  CMD.POKE,
    "modify": CMD.POKE,
}

两者都对我来说运作良好,但是我对它们感到不可思议。

这些实际上是不好的构造吗?


问题答案:

这是DictObj类的简单版本:

class DictObj(object):
    def __getattr__(self, attr):
        return self.__dict__.get(attr)

>>> d = DictObj()
>>> d.something = 'one'
>>> print d.something
one
>>> print d.somethingelse
None
>>>


 类似资料:
  • 问题内容: 我需要像这样用javascript制作字典 我不记得确切的符号了,但是有点像: javascript中有这样的事情吗? 问题答案: 这是一篇旧文章,但我认为无论如何我都应该提供一个图解的答案。 使用javascript的对象表示法。像这样: 并访问值: 或者您可以使用javascript文字对象表示法,其中键不需要用引号引起来:

  • 问题内容: 如何将的表示形式(例如以下字符串)转换为? 我宁愿不使用。我还能使用什么? 造成这种情况的主要原因是他写的我的同事课程之一,将所有输入都转换为字符串。我不打算去修改他的课程,以解决这个问题。 问题答案: 从Python 2.6开始,你可以使用内置的: 这比使用更为安全eval。正如其自己的文档所说: 例如:

  • 问题内容: 我有以下词典列表: 我想对每个求和并在字典列表中得到以下结果: 问题答案: from collections import defaultdict 它产生: 要将其转换为词典列表: 结果:

  • 本文向大家介绍python 字典套字典或列表的示例,包括了python 字典套字典或列表的示例的使用技巧和注意事项,需要的朋友参考一下 文件f1 A 1 a A 1 b A 2 C B 2 a B 2 b 生成如下字典: 以上这篇python 字典套字典或列表的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 我发现访问dict键而不是更为方便,因此我编写了以下代码段: 但是,我认为一定有某些原因导致Python无法立即提供此功能。以这种方式访问​​字典键的注意事项和陷阱是什么? 问题答案: 最好的方法是: 一些优点: 它实际上有效! 没有字典类方法被遮盖(例如,.keys()工作正常) 属性和项目始终同步 尝试访问不存在的键作为属性正确引发,AttributeError而不是KeyErro

  • 问题内容: 快速提问主要满足我对这个话题的好奇心。 我正在编写一些带有SQlite数据库后端的大型python程序,并且将来会处理大量记录,因此,我需要尽可能地优化。 对于一些功能,我正在字典中搜索关键字。我一直在使用“ in”关键字进行原型设计,并计划稍后返回并优化这些搜索,因为我知道“ in”关键字通常为O(n)(因为这仅表示python遍历整个列表并进行比较每个元素)。但是,由于python