草庐IT

func_dict

全部标签

python - 使用 `__dict__` 还是 `vars()` ?

内置函数vars()在我看来更像Pythonic,但我发现__dict__的使用频率更高。Python文档表明它们是等效的。一位博主claimsthat__dict__isfasterthanvars().我应该使用哪个? 最佳答案 通常,您应该将dunder/magic方法视为实现并将函数/方法作为API调用,因此最好使用vars()而不是__dict__,就像你会做len(a_list)而不是a_list.__len__()或a_dict["key"]而不是a_dict.__getitem__('key')

python - 如何通过 __dict__ 分配新的类属性?

我想通过一个字符串对象来分配一个类属性——但是怎么做呢?例子:classtest(object):passa=test()test.value=5a.value#->5test.__dict__['value']#->5#BUT:attr_name='next_value'test.__dict__[attr_name]=10#->'dictproxy'objectdoesnotsupportitemassignment 最佳答案 有一个内置函数:setattr(test,attr_name,10)引用:http://docs.py

python - 如何通过 __dict__ 分配新的类属性?

我想通过一个字符串对象来分配一个类属性——但是怎么做呢?例子:classtest(object):passa=test()test.value=5a.value#->5test.__dict__['value']#->5#BUT:attr_name='next_value'test.__dict__[attr_name]=10#->'dictproxy'objectdoesnotsupportitemassignment 最佳答案 有一个内置函数:setattr(test,attr_name,10)引用:http://docs.py

python - 从 Pandas 聚合 ("FutureWarning: using a dict with renaming is deprecated"重命名结果列)

我正在尝试对pandas数据框进行一些聚合。这是一个示例代码:importpandasaspddf=pd.DataFrame({"User":["user1","user2","user2","user3","user2","user1"],"Amount":[10.0,5.0,8.0,10.5,7.5,8.0]})df.groupby(["User"]).agg({"Amount":{"Sum":"sum","Count":"count"}})Out[1]:AmountSumCountUseruser118.02user220.53user310.51这会产生以下警告:FutureW

python - 从 Pandas 聚合 ("FutureWarning: using a dict with renaming is deprecated"重命名结果列)

我正在尝试对pandas数据框进行一些聚合。这是一个示例代码:importpandasaspddf=pd.DataFrame({"User":["user1","user2","user2","user3","user2","user1"],"Amount":[10.0,5.0,8.0,10.5,7.5,8.0]})df.groupby(["User"]).agg({"Amount":{"Sum":"sum","Count":"count"}})Out[1]:AmountSumCountUseruser118.02user220.53user310.51这会产生以下警告:FutureW

python - 为什么 Python 3 需要用 list() 包裹 dict.items?

我正在使用Python3。我刚刚安装了PythonIDE,我对以下代码警告感到好奇:features={...}fork,vinfeatures.items():print("%s=%s"%(k,v))警告是:"对于Python3的支持应该看起来像...list(features.items())"在http://docs.python.org/2/library/2to3.html#fixers上也有提及。Italsowrapsexistingusagesofdict.items(),dict.keys(),anddict.values()inacalltolist.为什么需要这样做

python - 为什么 Python 3 需要用 list() 包裹 dict.items?

我正在使用Python3。我刚刚安装了PythonIDE,我对以下代码警告感到好奇:features={...}fork,vinfeatures.items():print("%s=%s"%(k,v))警告是:"对于Python3的支持应该看起来像...list(features.items())"在http://docs.python.org/2/library/2to3.html#fixers上也有提及。Italsowrapsexistingusagesofdict.items(),dict.keys(),anddict.values()inacalltolist.为什么需要这样做

如果 dict 中的键不存在,Python 会更新它

如果键不在dict.keys()中,我想在dict中插入一个键值对。基本上我可以这样做:ifkeynotind.keys():d[key]=value但是有更好的方法吗?或者这个问题的pythonic解决方案是什么? 最佳答案 你不需要调用d.keys(),所以ifkeynotind:d[key]=value就够了。没有比这更清晰、更易读的方法了。您可以使用dict.get()再次更新,如果键已经存在,它将返回一个现有值:d[key]=d.get(key,value)但我强烈建议不要这样做;这是代码打高尔夫球,妨碍维护和可读性。

如果 dict 中的键不存在,Python 会更新它

如果键不在dict.keys()中,我想在dict中插入一个键值对。基本上我可以这样做:ifkeynotind.keys():d[key]=value但是有更好的方法吗?或者这个问题的pythonic解决方案是什么? 最佳答案 你不需要调用d.keys(),所以ifkeynotind:d[key]=value就够了。没有比这更清晰、更易读的方法了。您可以使用dict.get()再次更新,如果键已经存在,它将返回一个现有值:d[key]=d.get(key,value)但我强烈建议不要这样做;这是代码打高尔夫球,妨碍维护和可读性。

python - 如何在python中为dict使用点符号?

我对python很陌生,我希望我可以使用.表示法来访问dict的值。假设我有这样的test:>>>test=dict()>>>test['name']='value'>>>print(test['name'])value但我希望我可以通过test.name来获取value。事实上,我通过在我的类中重写__getattr__方法来做到这一点,如下所示:classJuspayObject:def__init__(self,response):self.__dict__['_response']=responsedef__getattr__(self,key):try:returnself.