相关疑难解决方法(0)

**kwargs的目的和用途是什么?

**kwargs在Python中有什么用途?

我知道你可以objects.filter在桌子上做一个并传递一个**kwargs参数.  

我也可以这样做来指定时间增量timedelta(hours = time1)吗?

它究竟是如何工作的?这类是"解包"吗?喜欢a,b=1,2

python kwargs

746
推荐指数
9
解决办法
57万
查看次数

什么是Python中的"可调用"?

现在很清楚元类是什么,有一个相关的概念,我一直在使用,而不知道它的真正含义.

我想每个人都用括号做错了,导致"对象不可调用"异常.更重要的是,使用__init____new__导致想知道这种血腥__call__可以用于什么.

你能给我一些解释,包括魔术方法的例子吗?

python callable

286
推荐指数
8
解决办法
23万
查看次数

collections.ChainMap的目的是什么?

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

它是由动机这个问题,并通过公开这一个(没有PEP创建).

据我所知,它是一个替代,有一个额外的字典,并用update()s 维护它.

问题是:

  • 用例ChainMap包括哪些用例?
  • 有真实世界的例子ChainMap吗?
  • 它是否用于切换到python3的第三方库?

额外问题:有没有办法在Python2.x上使用它?


我在Transforming Code into Beautiful, Idiomatic PythonRayCon Hettinger的PyCon演讲中听说过它,我想将它添加到我的工具包中,但我不知道何时应该使用它.

python collections dictionary data-structures python-3.x

60
推荐指数
4
解决办法
1万
查看次数

python格式字符串未使用的命名参数

比方说我有:

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)

是否有一些解决方法可以防止此错误发生,例如:

  • 如果keyrror:忽略,别管它(但要解析别人)
  • 比较格式字符串和可用的命名参数,如果缺少则添加

python string string-formatting missing-data defaultdict

48
推荐指数
5
解决办法
2万
查看次数

将`defaultdict`暴露为常规`dict`

defaultdict(set)用来填充非常大的数据结构中的内部映射.填充后,整个结构(包括映射)将暴露给客户端代码.那时,我不希望任何人修改映射.

并且没有人故意这样做.但有时,客户端代码可能会意外地引用不存在的元素.此时,普通字典会引发KeyError,但由于映射是defaultdict,它只是在该键上创建一个新元素(空集).这很难理解,因为一切都是默默无闻的.但我需要确保不会发生这种情况(语义实际上不会中断,但映射会变得很大).

我该怎么办?我可以看到这些选择:

  1. 查找当前和未来客户端代码中的所有实例,其中对映射执行字典查找,并将其转换为其他实例mapping.get(k, {}).这太可怕了.

  2. defaultdict数据结构完全初始化后,通过将其转换为"冻结" dict.(我知道它并没有真正冻结,但我相信客户端代码实际上并没有写mapping[k] = v.)不雅,并且性能大.

  3. 包装defaultdict成一个dict界面.这样做的优雅方式是什么?我担心性能损失可能很大(这种查找在紧密循环中被大量使用).

  4. 子类defaultdict并添加一个"关闭"所有defaultdict功能的方法,使其表现得像是常规的dict.这是上面3的变种,但我不确定它是否更快.如果不依赖于实施细节,我不知道它是否可行.

  5. dict在数据结构中使用regular ,重写那里的所有代码,首先检查元素是否在字典中,如果不在,则添加它.不好.

python wrapper python-3.x defaultdict

25
推荐指数
1
解决办法
4076
查看次数

Python defaultdict不插入缺失值

因此,defaultdict文档提到,如果缺少某个项,则default_factory" 返回的值将插入到密钥的字典中,并返回".这在大多数时候都很棒,但在这种情况下我真正想要的是返回值但插入defaultdict.

我想我可能是子类defaultdict并覆盖......我猜__missing__?不确定.最好的方法是什么?

提前致谢.

python collections defaultdict

15
推荐指数
1
解决办法
2271
查看次数

了解 Python 中 defaultdict 的使用

我开始学习 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)

我遇到问题的部分是第三行。有人可以向我解释一下这里发生了什么吗?

python

5
推荐指数
2
解决办法
1万
查看次数

大多数pythonic方式绘制多个信号

我想将一个或多个信号绘制成一个图.

对于每个信号,可以指定单独的颜色,线宽和线条样式.如果必须绘制多个信号,则还应提供图例.

到目前为止,我使用以下代码,允许我绘制最多三个信号.

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 matplotlib python-2.7

4
推荐指数
1
解决办法
1123
查看次数

将元素附加到 Python 中的空列表字典

我想拿一个空字典并动态地使它成为一个列表字典。换句话说,我有一个空字典,当我从文件中一个一个地读取值时,我想将它们一个一个地附加到给定的字典键(可能已经存在也可能不存在)。

挑战在于我无法立即创建列表。我只能一个一个地附加值,但我不确定如何在添加第一个元素时告诉 Python 我想要一个列表字典。

如果字典开始为空,那么在创建第一个键值对时如何使其成为列表字典?然后我将如何将后续值附加到同一个键?

python dictionary class list append

3
推荐指数
1
解决办法
2万
查看次数

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 dictionary python-3.x

3
推荐指数
1
解决办法
67
查看次数