Py学习  »  Python

访问Python dict中的项

Sanjay • 5 年前 • 1795 次点击  

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

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")

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56313
 
1795 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Jesrat
Reply   •   1 楼
Jesrat    5 年前

def filter_data(dd,过滤器):

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

Code-Apprentice
Reply   •   2 楼
Code-Apprentice    5 年前

这与类型注释和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}