GVKun编程网logo

Python-如何使用点“。” 访问字典成员?(python 访问字典的键)

17

本文的目的是介绍Python-如何使用点“。”访问字典成员?的详细情况,特别关注python访问字典的键的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Python-

本文的目的是介绍Python-如何使用点“。” 访问字典成员?的详细情况,特别关注python 访问字典的键的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Python-如何使用点“。” 访问字典成员?的机会,同时也不会遗漏关于python – 以字典形式访问字典、python – 如何使用sphinx / autodoc列出未记录的成员?、python – 如何在django模板中访问字典值、python – 快速访问字典中的部分数据的知识。

本文目录一览:

Python-如何使用点“。” 访问字典成员?(python 访问字典的键)

Python-如何使用点“。” 访问字典成员?(python 访问字典的键)

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

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

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

mydict.mydict2.val 

将指

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

答案1

小编典典

你可以使用我刚刚制作的此类来做。通过此类,你可以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 keym.new_key = ''Hello world!''# Orm[''new_key''] = ''Hello world!''print m.new_keyprint m[''new_key'']# Update valuesm.new_key = ''Yay!''# Orm[''new_key''] = ''Yay!''# Delete keydel m.new_key# Ordel m[''new_key'']

答案2

小编典典

我一直将其保存在util文件中。你也可以在自己的类中将其用作混合。

class dotdict(dict):    """dot.notation access to dictionary attributes"""    __getattr__ = dict.get    __setattr__ = dict.__setitem__    __delattr__ = dict.__delitem__mydict = {''val'':''it works''}nested_dict = {''val'':''nested works too''}mydict = dotdict(mydict)mydict.val# ''it works''mydict.nested = dotdict(nested_dict)mydict.nested.val# ''nested works too''

python – 以字典形式访问字典

python – 以字典形式访问字典

我有一个数据源,最好用字典建模(它是key = value对的集合).对于特定的可视化目的,我需要提供类似列表的数据访问接口(除了常规字典界面),这意味着您应该能够执行以下操作:

data["mykey"] # returns the associated value
data[12][0] # returns the 13th key in the dictionary
data[12][1] # returns the 13th value in the dictionary

我找不到合适的Facade实现 – 如果我将索引存储为字典键:

data[12] = ("mykey","myval")

我可以很容易地解决最后两种情况,但我放弃了做第一种情况的能力.如果我存储数据

data["mykey"] = "myval"

在返回元素之前,我必须枚举临时列表中的所有键和值.

请注意,所有这些实现都假设我正在使用OrderedDict.

你会如何提供这两种接口?

如果你很好奇,这是为了创建一个PyQt QAbstractTableModel,其中底层数据容器是一个字典.

谢谢.

最佳答案
我必须做同样的事情来表示ListCtrl中的数据需要可以通过键而不是索引来访问(这样如果我得到一个任意值来定位就不必搜索它).如果你有一个字典列表,我发现最好的是创建另一个字典,引用相同的项目,但可以通过键访问.这成为我在方法中的数据加载:

  def SetData(self,cols,data):
    for idx,row in enumerate(data):
      item = dict((k,v.rstrip() if hasattr(v,'rstrip') else v) for k,v in zip(cols,row))

      self.data[idx] = item

      self.byid[row[0]] = item

所以我有一个可以在self.data中访问的字典列表,然后是self.byid中的另一个字典,它保存相同的项目,但是由id列(在这种情况下我的行中的第0列).当我需要更新时,只要我得到一个ID,我就可以调用self.byid [id] [field] = newval.因为Python中的所有内容都是指针(引用),所以更改self.byid中存储的字典的值会反映在self.data中存储的字典列表中.奇迹般有效.

python – 如何使用sphinx / autodoc列出未记录的成员?

python – 如何使用sphinx / autodoc列出未记录的成员?

我正在使用带有autodoc扩展的sphinx,并希望生成一个仅包含几个模块中未记录的成员函数的列表,而不是文档化的成员.

我可以成功创建一个包含文档成员和未记录成员的列表,如下所示:

.. automodule:: module
    :members:
    :undoc-members:

仅使用:members:指令可以按预期创建已记录成员的列表.

.. automodule:: module
    :members:

但仅使用:undoc-members:指令(即省略:members:flag)根本不会产生任何列表:

.. automodule:: module
    :undoc-members:

有没有办法自动生成这个?

(主要文档包含一个显示所有文档成员的页面,但我发现通过使用单个页面列出任何未记录的成员来确保我为每个函数编写文档更有用,而不显示那些文档记录的).

最佳答案
重写autodoc-process-docstring事件(如@delnan所述)可以通过在conf.py中添加以下内容来提供帮助:

# set up the types of member to check that are documented
members_to_watch = ['function',];

def warn_undocumented_members(app,what,name,obj,options,lines):
    if(what in members_to_watch and len(lines)==0):
        # warn to terminal during build
        print "Warning: ","is undocumented: ","(%d)"% len(lines);
        # or modify the docstring so the rendered output is highlights the omission
        lines.append(".. Warning:: %s '%s' undocumented" % (what,name));

然后将此函数连接到事件(来自this SO thread中的答案):

def setup(app):
    app.connect('autodoc-process-docstring',warn_undocumented_members);

要打开(关闭)警告,请在conf.py中使用autodoc_default_flags全局包含(排除)undoc-members,或者使用问题中的两个指令.

autodoc_default_flags = ['members','undoc-members' ]
#autodoc_default_flags = ['members' ]

编辑:

我尝试通过以下方法扩展此方法以仅生成undoc成员:

>在函数warn_undocumented_members(上面)期间有条件地在对象上设置一个属性,比如warn_undoc = True
>将第二个覆盖函数附加到预处理程序事件autodoc-skip-member,如果它们没有设置warn_undoc,则跳过所有成员.

但是,进一步的调查规则是这种方法,因为在autodoc-process-docstring发生之前,每个成员组都会发生autodoc-skip-member.因此,根据文档字符串的存在/不存在,属性设置得太迟而无法有条件地跳过.

python – 如何在django模板中访问字典值

python – 如何在django模板中访问字典值

如何在 django模板中访问字典值?我想实际得到变量a的值
class Emp(models.Model):
  name = models.CharField(max_length=255,unique=True)
  address1 = models.CharField(max_length=255)

  def get_names(self):
    names = {}
    names_desc = {}
    nbl = {}
    names.update({'a' : 1})
    names_desc.update({'b' : 2})
    nbl.update({'names' : names,'names_desc' : names_desc})
    return nbl

emp是我传递给模板的对象
是{{emp.get_names}} ??或{{emp.get_names.names.a}}

解决方法

{{ emp.get_names.names.a }} will get you 1 in the template

{{ emp.get_names.names }} will get you {'A':1} in the template

{{ emp.get_names }} will get you {'names_desc': {'b': 2},'names': {'a': 1}} in the template

python – 快速访问字典中的部分数据

python – 快速访问字典中的部分数据

例如,如果我在字典中有数百万条记录,其形式为
{(1,2):3,(2,3):4,(3:2):5 … xmillion}
这是一个元组作为键,具有相应的值

我想做的是获取元组[1]的值= 2的数据
我的方法之一是

for item,value in dict.iteritems():
      if item[1] == 2:
        Do operations here...

这是一个缓慢的方法,是否有更好的算法来做到这一点,以使其快速?
喜欢..所以我不必经历数百万的项目

解决方法

在作为键的元组字典中,您必须遍历所有键才能找到 那些有密钥[1] == 2.除了解决这个问题别无他法.

今天关于Python-如何使用点“。” 访问字典成员?python 访问字典的键的分享就到这里,希望大家有所收获,若想了解更多关于python – 以字典形式访问字典、python – 如何使用sphinx / autodoc列出未记录的成员?、python – 如何在django模板中访问字典值、python – 快速访问字典中的部分数据等相关知识,可以在本站进行查询。

本文标签: