草庐IT

test_dict

全部标签

Python 类型提示 : typing. Mapping vs. typing.Dict

我正在开发一个python3项目,我们在整个项目中使用typing模块类型提示。我们似乎可以互换使用typing.Dict和typing.Mapping。有理由偏爱其中之一吗? 最佳答案 设法自己回答这个问题。typing.Dict应该用于指示支持元素类型提示的文字dict类型,即Dict[bytes,str]typing.Mapping是一个对象,它定义了__getitem__,__len__,__iter__魔术方法typing.MutableMapping是一个定义与Mapping相同但还具有__setitem__,__del

python - 什么时候可以设置 dict_values View (为什么)?

文档说valuesviewsarenottreatedasset-like,但有时它们是:>>>d={1:1}>>>d.values()|d.keys(){1}>>>d.values()&d.keys(){1}>>>d.values()-d.keys()set()为什么实现集合返回集合语义但随后以实际集合失败?>>>d.values()-{1}TypeError:unsupportedoperandtype(s)for-:'dict_values'and'set' 最佳答案 这实际上不是dict_values处理操作。keys_vi

python :unit test throws <Response streamed [200 OK]> instead of actual output

fromflaskimportjsonify@app.route('/urlinfo/1/',methods=['GET'])defsearch(URL):ifsomething:a=dict(message="everythingisgood"resp=jsonify(a)returnrespelse:a=dict(error="problem")returnjsonify(a)我正在使用curl它curlhttp://127.0.0.1:5000/urlinfo/1/'https://www.youtube.com/'它以json格式返回所需的输出。我为它写了一个单元测试impor

python - python dict str() 函数是否可靠地对键进行排序?

在python中,字典{1:1,2:2,3:3}和{3:3,2:2,1:1}产生"{1:1,2:2,3:3}"当str()'d?我能否依赖这种排序,或者至少依赖于包含相同键/值对的字典在通过str()函数时会生成相同的字符串这一事实? 最佳答案 您不能依赖这两个属性中的任何一个。字典转换为字符串时的顺序还取决于键/值对的插入顺序。只要对Python源代码有一点了解(观看PyCon2010中的TheMightyDictionary),或者通过反复试验,您可以轻松找到反例:>>>{1:1,9:9}{1:1,9:9}>>>{9:9,1:1

python - 导入错误 : cannot import name 'transfer_markers' when testing with pytest

当我通过运行以下命令为我的python项目运行测试时:pythonsetup.pytest(or)pytestproject_name我收到以下错误:.../project_name/.eggs/pytest_asyncio-0.9.0-py3.6.egg/pytest_asyncio/plugin.py",line8,infrom_pytest.pythonimporttransfer_markersImportError:cannotimportname'transfer_markers' 最佳答案 当我在网上查找时,几乎没有任

python - 'str' 对象没有属性 '__dict__'

我想在Python中将字典序列化为JSON。我有这个'str'objecthasnoattribute'dict'错误。这是我的代码...fromdjango.utilsimportsimplejsonclassPerson(object):a=""person1=Person()person1.a="111"person2=Person()person2.a="222"list={}list["first"]=person1list["second"]=person2s=simplejson.dumps([p.__dict__forpinlist])异常(exception)情况是;

Python 列表理解 : test function return

有没有办法在列表(或字典)理解中测试函数的返回?我想避免这样写:lst=[]forxinrange(10):bar=foo(x)ifbar:lst.append(bar)并改用列表理解。显然,我不想写:[foo(x)forxinrange(10)iffoo(x)]所以呢?[foo(x)forxinrange(10)if???] 最佳答案 怎么样filter(None,map(foo,range(10)))如果您不想保留中间列表,请将map()替换为itertools.imap().和itertools.ifilter(),整个东西可

python - 在python dict中获取对应于max(value)的Key(s)

这个问题在这里已经有了答案:Gettingkeywithmaximumvalueindictionary?(29个答案)关闭9年前。让我们考虑以下(键,值)对的示例字典:dict1={'a':10,'x':44,'f':34,'h':89,'j':90,'d':28,'g':90}dict2={'a':10,'x':44,'f':34,'h':89,'j':90,'d':28}在字典中的所有值中,90是最高的。我需要检索与之对应的一个或多个key。完成这项工作的可能方法有哪些?哪个最有效,为什么?注意:字典中的键和/或值顺序不对。该程序不断向字典中添加新的(键、值)对。max(valu

python - 当你调用 `if key in dict` 时会发生什么

我有一个实现了__hash__和__eq__的类(我们称它为myClass)。我还有一个dict将myClass对象映射到某个值,计算需要一些时间。在我的程序中,许多(数以百万计)myClass对象被实例化。这就是我使用dict来跟踪这些值的原因。但是,有时新的myClass对象可能等同于旧的对象(由__eq__方法定义)。因此,与其再次计算该对象的值,不如在dict中查找旧的myClass对象的值。为此,我执行ifmyNewMyClassObjindict。这是我的问题:当我使用in子句时,调用的是什么,__hash__或__eq__?使用dict的要点是它的查找时间为O(1)。那么

Python:在字典中组合 "if ' x' 和 "for i in dict[' x']"

真的有两个问题:如果我有一个字典(最初来自解析json消息),其中有一个可选数组:dict_with={'name':'bob','city':'sanfrancisco','kids':{'name':'alice'}}dict_without={'name':'bob','city':'sanfrancisco'}我通常会有这样的代码:if'kids'indict:forkindict['kids']:#dostuff我的第一个问题是有什么python方法可以结合if保护和for循环吗?第二个问题是我的直觉告诉我原始json消息的更好设计是始终指定kids元素,只是使用一个空字典: