【问题标题】:How to add python docstring for dict of dict如何为dict的dict添加python docstring
【发布时间】:2021-04-13 23:45:02
【问题描述】:

我有一个对象是字典的字典。我想告诉我的编辑这个对象是这样的,我该怎么做呢?目前我有:

def do_somthing(dict_of_dicts):
    """
    :type dict_of_dicts: dict of dict
    """

    for key, value in dict_of_dicts.items():
            for key2, value2 in value.items():
                print('Key')

但是,我的编辑器(Pycharm)似乎没有注册这个。

【问题讨论】:

标签: python python-3.x pycharm docstring


【解决方案1】:

您可以使用Dict 的类型提示来实现此目的:

from typing import Dict, Any

def do_somthing(dict_of_dicts: Dict[Any, Dict]):
    """
    :type dict_of_dicts: Dict[Any, Dict]
    """

    for key, value in dict_of_dicts.items():
            for key2, value2 in value.items():
                print('Key')

【讨论】:

  • 像魅力一样工作,谢谢! (请注意,我必须将 Dict 更改为 dict 才能工作
  • 好吧,Dict 是类型表示法,dict 是转换为字典的方法。你是否包括了输入的导入?
  • @superdee 你不应该这样做,它可能并不意味着你想要它的意思。当你使用Dict 时,会发生什么?
  • 我的 IDE 不会自动填充诸如 .items() 之类的值
  • 这很奇怪,即使您尝试Dict[Any, Dict[Any, Any]]?只是为了了解您的 IDE 如何读取类型提示。
【解决方案2】:

我不使用 PyCharm,但是……它理解类型注释,对吗?因此,将其指定为注释:

from typing import Dict, Any

def do_something(dict_of_dicts: Dict[Any, Dict[Any, Any]]):
    # ...

或者你甚至可以定义一个通用的DictOfDict 类型(通用的外键、内键和内值):

from typing import Dict, Any, TypeVar, Generic:

K1, K2, V = TypeVar('K1'), TypeVar('K2'), TypeVar('V')
class DictOfDicts(Dict[K1, Dict[K2, V]]): ...

def do_something(dict_of_dicts: DictOfDicts[Any, Any, Any]):
    # ...

【讨论】:

    【解决方案3】:

    您可能已经找到了答案,但对于偶然发现此主题的其他人:

    试试这个,不用导入typing

    dict[dict]
    

    它将在文档字符串中显示为:

     Dict[dict]
    

    在你的例子中:

    def do_somthing(dict_of_dicts):
        """
        :type dict_of_dicts: dict[Any, dict]
        """
    
        for key, value in dict_of_dicts.items():
                for key2, value2 in value.items():
                    print('Key')
    

    【讨论】:

      【解决方案4】:

      你也可以加param:

      def do_somthing(dict_of_dicts):
          """
          :param dict_of_dicts: A dictionary of dictionaries.
          :type dict_of_dicts: dict of dict
          """
      
      for key, value in dict_of_dicts.items():
              for key2, value2 in value.items():
                  print('Key')
      

      我建议阅读这篇文章:https://thomas-cokelaer.info/tutorials/sphinx/docstring_python.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-02
        • 2021-11-28
        • 2022-06-17
        相关资源
        最近更新 更多