社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

访问Python dict中的项

Sanjay • 4 年前 • 980 次点击  

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

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
 
980 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Jesrat
Reply   •   1 楼
Jesrat    4 年前

def filter_data(dd,过滤器):

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

Code-Apprentice
Reply   •   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}