代码之家  ›  专栏  ›  技术社区  ›  Axel

访问Python dict中的项

  •  0
  • Axel  · 技术社区  · 4 年前

    假设我有一个过滤数据的函数,如下所示:

    from typing import Dict, Union
    
    
    def filterData(data: Dict[str, str], fields: Union[list, tuple]) -> dict:
    
        filteredData = {}
    
        for field in fields:
            if field in data:
                filteredData[field] = data[field]
    
        return filteredData
    

    我这样使用这个函数:

    data = filterData({"a": "b", "c": "d"}, ("a")) # This should return {"a": "b"}.
    

    现在,当我试图接近 a 性质类似 data.a ,我得到一个错误,上面写着 Instance of dict has no member a . 如何定义和应用定义该词典所有成员的类型?

    我试着创建一个类,

    class ReqData():
        a: str
    

    然后像这样应用到变量上,

    data: ReqData = filterData({"a": "b", "c": "d"}, ("a")
    

    2 回复  |  直到 4 年前
        1
  •  2
  •   Code-Apprentice    4 年前

    这与类型注释和Python字典语法无关。与JavaScript对象不同,不能使用点表示法访问Python字典中的键。相反,必须使用与当前代码相同的括号表示法:

    print(data["a"])
    

    filterData() 在一行中的功能与字典理解:

    def filterData(data: Dict[str, Union(str, int)], fields: Union[list, tuple]) -> dict:
        return {field : data[field] for field in data if field in fields}
    
        2
  •  -2
  •   Jesrat    4 年前

    def filter_data(dd,过滤器):

    打印(过滤数据({'a':'avalue','b':'bvalue','c':'cvalue'},['a','c']))