小编Bil*_*ll 的帖子

列表理解从元组列表中提取多个字段

我有一个元组列表

servers = [('server1', 80 , 1, 2), ('server2', 443, 3, 4)]
Run Code Online (Sandbox Code Playgroud)

我想创建一个只有前两个字段的新列表,如:

 [('server1', 80), ('server2', 443)]
Run Code Online (Sandbox Code Playgroud)

但我看不出如何为多个元素制作列表理解.

hosts = [x[0] for x in servers]  # this works to give me ['server1', server2']

hostswithports = [x[0], x[1] for x in servers] # this does not work
Run Code Online (Sandbox Code Playgroud)

我更喜欢学习使用循环的pythonic方式 - 我做错了什么?

python tuples python-itertools

19
推荐指数
4
解决办法
2299
查看次数

在 Dataclass 中创建 DefaultDict 时遇到问题

我在使用新的 defaultdict(dict) 设置简单的数据类时遇到问题。

如果我告诉工厂使用“dict”,如下所示,实例化将失败并出现typerror collection.defaultdict对象不可调用

from collections import defaultdict
from dataclasses import dataclass, field

@dataclass
class ResultSet:
    changed: bool = False
    mqttdata:  defaultdict(dict) = field(default_factory=defaultdict(dict)) # does not work!
Run Code Online (Sandbox Code Playgroud)

它确实使用field(default_factory=defaultdict)工作,但是当我的代码遇到丢失的键时,它会失败 - 大概是因为没有为 dict 设置 defaultdict。

如何在数据类中正确设置新的defaultdict(dict)?

python-3.x defaultdict python-dataclasses

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