我有一个元组列表
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方式 - 我做错了什么?
我在使用新的 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)?