**kwargs在Python中有什么用途?
我知道你可以objects.filter在桌子上做一个并传递一个**kwargs参数.
我也可以这样做来指定时间增量timedelta(hours = time1)吗?
它究竟是如何工作的?这类是"解包"吗?喜欢a,b=1,2?
现在很清楚元类是什么,有一个相关的概念,我一直在使用,而不知道它的真正含义.
我想每个人都用括号做错了,导致"对象不可调用"异常.更重要的是,使用__init__并__new__导致想知道这种血腥__call__可以用于什么.
你能给我一些解释,包括魔术方法的例子吗?
在Python 3.3中,一个ChainMap类被添加到collections模块中:
提供了一个ChainMap类,用于快速链接多个映射,以便将它们视为一个单元.它通常比创建新字典和运行多个update()调用快得多.
例:
>>> from collections import ChainMap
>>> x = {'a': 1, 'b': 2}
>>> y = {'b': 10, 'c': 11}
>>> z = ChainMap(y, x)
>>> for k, v in z.items():
print(k, v)
a 1
c 11
b 10
Run Code Online (Sandbox Code Playgroud)
据我所知,它是一个替代,有一个额外的字典,并用update()s 维护它.
问题是:
ChainMap包括哪些用例?ChainMap吗?额外问题:有没有办法在Python2.x上使用它?
我在Transforming Code into Beautiful, Idiomatic PythonRayCon Hettinger的PyCon演讲中听说过它,我想将它添加到我的工具包中,但我不知道何时应该使用它.
比方说我有:
action = '{bond}, {james} {bond}'.format(bond='bond', james='james')
Run Code Online (Sandbox Code Playgroud)
这个输出:
'bond, james bond'
Run Code Online (Sandbox Code Playgroud)
接下来我们有:
action = '{bond}, {james} {bond}'.format(bond='bond')
Run Code Online (Sandbox Code Playgroud)
这将输出:
KeyError: 'james'
Run Code Online (Sandbox Code Playgroud)
是否有一些解决方法可以防止此错误发生,例如:
我defaultdict(set)用来填充非常大的数据结构中的内部映射.填充后,整个结构(包括映射)将暴露给客户端代码.那时,我不希望任何人修改映射.
并且没有人故意这样做.但有时,客户端代码可能会意外地引用不存在的元素.此时,普通字典会引发KeyError,但由于映射是defaultdict,它只是在该键上创建一个新元素(空集).这很难理解,因为一切都是默默无闻的.但我需要确保不会发生这种情况(语义实际上不会中断,但映射会变得很大).
我该怎么办?我可以看到这些选择:
查找当前和未来客户端代码中的所有实例,其中对映射执行字典查找,并将其转换为其他实例mapping.get(k, {}).这太可怕了.
defaultdict数据结构完全初始化后,通过将其转换为"冻结" dict.(我知道它并没有真正冻结,但我相信客户端代码实际上并没有写mapping[k] = v.)不雅,并且性能大.
包装defaultdict成一个dict界面.这样做的优雅方式是什么?我担心性能损失可能很大(这种查找在紧密循环中被大量使用).
子类defaultdict并添加一个"关闭"所有defaultdict功能的方法,使其表现得像是常规的dict.这是上面3的变种,但我不确定它是否更快.如果不依赖于实施细节,我不知道它是否可行.
dict在数据结构中使用regular ,重写那里的所有代码,首先检查元素是否在字典中,如果不在,则添加它.不好.
因此,defaultdict文档提到,如果缺少某个项,则default_factory" 返回的值将插入到密钥的字典中,并返回".这在大多数时候都很棒,但在这种情况下我真正想要的是返回值但不插入defaultdict.
我想我可能是子类defaultdict并覆盖......我猜__missing__?不确定.最好的方法是什么?
提前致谢.
我开始学习 Python 并遇到了一段代码,我希望你们中的一个人能帮助我理解。
from collections import defaultdict
dd_dict = defaultdict(dict)
dd_dict["Joel"]["City"] = "Seattle"
Run Code Online (Sandbox Code Playgroud)
结果:
{ "Joel" : { "City" : Seattle"}}
Run Code Online (Sandbox Code Playgroud)
我遇到问题的部分是第三行。有人可以向我解释一下这里发生了什么吗?
我想将一个或多个信号绘制成一个图.
对于每个信号,可以指定单独的颜色,线宽和线条样式.如果必须绘制多个信号,则还应提供图例.
到目前为止,我使用以下代码,允许我绘制最多三个信号.
import matplotlib
fig = matplotlib.figure.Figure(figsize=(8,6))
subplot = fig.add_axes([0.1, 0.2, 0.8, 0.75])
Signal2, Signal3, legend, t = None, None, None, None
Signal1, = subplot.plot(xDataSignal1, yDataSignal1, color=LineColor[0], linewidth=LineWidth[0],linestyle=LineStyle[0])
if (yDataSignal2 != [] and yDataSignal3 != []):
Signal2, = subplot.plot(xDataSignal2, yDataSignal2, color=LineColor[1], linewidth=LineWidth[1],linestyle=LineStyle[1])
Signal3, = subplot.plot(xDataSignal3, yDataSignal3, color=LineColor[2], linewidth=LineWidth[2],linestyle=LineStyle[2])
legend = subplot.legend([Signal1, Signal2, Signal3], [yLabel[0], yLabel[1], yLabel[2]],LegendPosition,labelspacing=0.1, borderpad=0.1)
legend.get_frame().set_linewidth(0.5)
for t in legend.get_texts():
t.set_fontsize(10)
elif (yDataSignal2 != []):
Signal2, = subplot.plot(xDataSignal2, yDataSignal2, color=LineColor[1], linewidth=LineWidth[1],linestyle=LineStyle[1])
legend = subplot.legend([Signal1, Signal2], [yLabel[0], yLabel[1]], …Run Code Online (Sandbox Code Playgroud) 我想拿一个空字典并动态地使它成为一个列表字典。换句话说,我有一个空字典,当我从文件中一个一个地读取值时,我想将它们一个一个地附加到给定的字典键(可能已经存在也可能不存在)。
挑战在于我无法立即创建列表。我只能一个一个地附加值,但我不确定如何在添加第一个元素时告诉 Python 我想要一个列表字典。
如果字典开始为空,那么在创建第一个键值对时如何使其成为列表字典?然后我将如何将后续值附加到同一个键?
我遇到的问题很难解释,很容易理解:
我有一个元组列表:
L=[('a','111'),('b','222'),('a','333'),('b','444')]
Run Code Online (Sandbox Code Playgroud)
从这个列表中,我想创建一个字典,其中键是元组的第一个元素('a' 和 'b'),关联的值在一个列表中:
预期输出:
{'a':['111','333'],'b':['222','444']}
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
d={}
for x in range (len(L)):
d[L[x][0]]=[L[x][1]]
return d
Run Code Online (Sandbox Code Playgroud)
但正如您可以轻松理解的那样,输出将不完整,因为列表将仅显示与 L 中该键关联的最后一个值
python ×10
defaultdict ×3
dictionary ×3
python-3.x ×3
collections ×2
append ×1
callable ×1
class ×1
kwargs ×1
list ×1
matplotlib ×1
missing-data ×1
python-2.7 ×1
string ×1
wrapper ×1