相关疑难解决方法(0)

python命名为字典的元组

我在python中有一个名为tuple的类

class Town(collections.namedtuple('Town', [
    'name', 
    'population',
    'coordinates',
    'population', 
    'capital', 
    'state_bird'])):
    # ...
Run Code Online (Sandbox Code Playgroud)

我想做的是将其变成字典.我承认python不是我强大的语言之一.关键是我不希望它与我所拥有的字段的名称或数字紧密相关.

有没有办法写它,以便我可以添加更多的字段,或传递一个完全不同的命名元组并获取字典.

编辑:我不能改变原来的类定义,因为它在别人的代码中.所以我需要一个城镇的实例并将其转换为字典.

python dictionary tuples namedtuple

126
推荐指数
3
解决办法
6万
查看次数

我可以覆盖一个namedtuple的字符串形式吗?

例如:

>>> Spoken = namedtuple("Spoken", ["loudness", "pitch"])
>>> s = Spoken(loudness=90, pitch='high')
>>> str(s)
"Spoken(loudness=90, pitch='high')"
Run Code Online (Sandbox Code Playgroud)

我想要的是:

>>> str(s)
90
Run Code Online (Sandbox Code Playgroud)

那就是我希望字符串表示显示响度属性.这可能吗 ?

python

37
推荐指数
2
解决办法
8677
查看次数

python 3 语义版本化并且向前兼容

我正在研究一些想要引入 Python 3.6 以便在以 3.5 为标准的环境中使用的软件。阅读Python的文档我找不到任何关于是否:

  • 3.5代表一个语义版本号
  • 3.6 代表向前兼容的升级(即:为 3.5 运行时编写的代码保证可以在 3.6 运行时运行)

事实上,这个关于移植到 3.7 的页面的存在让我强烈认为,但我看不到关于版本号含义的官方文档(如果有的话,ala Linux 内核版本控制)

从更一般的意义上来说 - 3.X 版本流中是否存在围绕兼容性标准的 PEP?

python backwards-compatibility forward-compatibility python-3.x

10
推荐指数
1
解决办法
4182
查看次数

我如何知道哪些 Python 版本可以运行我的代码?

我在一些地方读到过,一般来说,Python 不提供向后兼容性,这意味着任何较新版本的 Python 都可能会破坏在早期版本中运行良好的代码。如果是这样,作为开发人员,我如何知道哪些版本的 Python 可以成功执行我的代码?对此有什么规则/保证吗?或者我应该告诉我的用户:只需使用 Python 3.8(例如)运行它 - 不多也不少......?

python

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

将 NamedTuple 转换为 dict 以用于字典解包的 Pythonic 方法(**kwargs)

我有一个typing.NamedTuple我想转换为一个,dict以便我可以通过字典解包传递给一个函数:

def kwarg_func(**kwargs) -> None:
    print(kwargs)

# This doesn't actually work, I am looking for something like this
kwarg_func(**dict(my_named_tuple))
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最 Pythonic 方法是什么?我正在使用 Python 3.8+。


更多细节

这是一个NamedTuple可以使用的示例:

from typing import NamedTuple

class Foo(NamedTuple):
    f: float
    b: bool = True

foo = Foo(1.0)
Run Code Online (Sandbox Code Playgroud)

尝试kwarg_func(**dict(foo))提出一个TypeError

TypeError: cannot convert dictionary update sequence element #0 to a sequence
Run Code Online (Sandbox Code Playgroud)

根据这篇文章collections.namedtuple_asdict()作品:

TypeError: cannot convert dictionary update sequence element #0 to a sequence …
Run Code Online (Sandbox Code Playgroud)

python dictionary namedtuple iterable-unpacking

0
推荐指数
1
解决办法
40
查看次数