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

Python-如何使用点“。” 访问字典成员?

宿景曜
2023-03-14
问题内容

如何通过点“。”访问Python词典成员?

例如,mydict['val']我想写而不是写mydict.val

我也想以这种方式访问​​嵌套的字典。例如

mydict.mydict2.val 

将指

mydict = { 'mydict2': { 'val': ... } }

问题答案:

你可以使用我刚刚制作的此类来做。通过此类,你可以Map像其他字典(包括json序列化)一样使用该对象,也可以使用点符号。希望对你有所帮助:

class Map(dict):
    """
    Example:
    m = Map({'first_name': 'Eduardo'}, last_name='Pool', age=24, sports=['Soccer'])
    """
    def __init__(self, *args, **kwargs):
        super(Map, self).__init__(*args, **kwargs)
        for arg in args:
            if isinstance(arg, dict):
                for k, v in arg.iteritems():
                    self[k] = v

        if kwargs:
            for k, v in kwargs.iteritems():
                self[k] = v

    def __getattr__(self, attr):
        return self.get(attr)

    def __setattr__(self, key, value):
        self.__setitem__(key, value)

    def __setitem__(self, key, value):
        super(Map, self).__setitem__(key, value)
        self.__dict__.update({key: value})

    def __delattr__(self, item):
        self.__delitem__(item)

    def __delitem__(self, key):
        super(Map, self).__delitem__(key)
        del self.__dict__[key]

用法示例:

m = Map({'first_name': 'Eduardo'}, last_name='Pool', age=24, sports=['Soccer'])
# Add new key
m.new_key = 'Hello world!'
# Or
m['new_key'] = 'Hello world!'
print m.new_key
print m['new_key']
# Update values
m.new_key = 'Yay!'
# Or
m['new_key'] = 'Yay!'
# Delete key
del m.new_key
# Or
del m['new_key']


 类似资料:
  • 我想更改字典的纬度和经度值。 它正在抛出以下错误消息: 对于此它在targetWaypoints内打印一个完整的字典。我想打印纬度值。 提前谢谢。

  • 如何在Swift中到达以下字典中的第二个整数(键)?而且,当我这样做的时候,我怎样才能找到第二个字典里的字串呢? 我尝试编写(例如)var test:Int=activeCustomers[1][1],但这不起作用。它说字典里没有一个叫下标的成员。

  • 问题内容: 我正在尝试使Django函数进行JSON序列化并将其返回到对象中。 我正在这样使用它: 但是我得到这个错误: 有任何想法吗? 编辑:这是回溯: http://dpaste.com/38786/ 问题答案: 更新:Python现在拥有自己的json处理程序,只需使用即可代替。 Django序列化器模块旨在序列化Django ORM对象。如果要对常规Python字典进行编码,则应使用sim

  • 问题内容: 考虑像这样的字典 例如,如何访问该词典的特定元素?例如,我想在格式化Apple的第一个元素(在我们的情况下仅是“ American”)之后打印第一个元素。 附加信息上面的数据结构是通过在python函数中解析输入文件创建的。一旦创建,它在该运行中将保持不变。 我在函数中使用此数据结构。 因此,如果文件发生更改,则下次运行此应用程序时,文件的内容将有所不同,因此此数据结构的内容将有所不同

  • 使用Python我试图访问一个字段是字符串格式的CSV文件,其中有一个字典列表。 一行 NameError Traceback(最近的调用最后)在 () ---- C:\Program Data\Anaconda3\lib\site-包\熊猫\core\series.py在应用(自我,功能,convert_dtype,args,**kwds)3190 其他:3191值=self.astype(对象

  • 问题内容: 我正在使用YAML配置文件。这是在Python中加载我的配置的代码: 这段代码实际上创建了一个字典。现在的问题是,为了访问值,我需要使用大量的括号。 YAML: 蟒蛇: 我更喜欢这样的东西(点符号): 因此,我的想法是利用PyStache render()接口。 那将是一个“好的”解决方案吗?如果没有,什么是更好的选择? 附加问题[已解决] 我决定使用IljaEverilä的解决方案。