创建 python 对象化元素,然后添加属性
Creating python objectify Element and then adding attributes
我正在尝试将名为 Origin 的 python class 序列化为包含字典作为属性的 xml 和 lxml 对象化。此字典使用每个键的值 "default" 进行初始化。
class Origin:
def __init__(self):
dict = {"A":"default", "B":"default" ...} // my dictionnary has 6 keys actually
首先解析一个XML来填充字典。并非每个键都已填充。例如:dict = {A:"hello", B:"default" ...}
我想用我的字典作为属性创建我的 Origin XML 元素,但我不想拥有 "default" 键。
我的解决方案是嵌套 if:
ìf(self.dict["A"] != "default"):
if(self.dict["B"] != "default"):
...
objectify.Element("Origin", A=self.dict["A"], B=self.dict["B"]...)
但如果您有一个或两个以上的密钥,这是一个丑陋且不实用的解决方案。
有没有办法先创建我的元素 origin = objectify.Element("Origin")
,然后添加我的字典键'(如果与 "default" 不同?
更有活力的东西,比如
for key in self.dict:
if(self.dict[key] != "default"):
origin.addAttribute(key=self.dict[key])
谢谢
我会将字典过滤为仅包含非 "default"
的值。
字典理解功能在这里帮了大忙。
示例:
data = {
"A": "foo",
"B": "default",
"C": "bar",
}
data = {key: value for key, value in data.items() if value != "default"}
print(data)
输出:
{'A': 'foo', 'C': 'bar'}
我正在尝试将名为 Origin 的 python class 序列化为包含字典作为属性的 xml 和 lxml 对象化。此字典使用每个键的值 "default" 进行初始化。
class Origin:
def __init__(self):
dict = {"A":"default", "B":"default" ...} // my dictionnary has 6 keys actually
首先解析一个XML来填充字典。并非每个键都已填充。例如:dict = {A:"hello", B:"default" ...}
我想用我的字典作为属性创建我的 Origin XML 元素,但我不想拥有 "default" 键。
我的解决方案是嵌套 if:
ìf(self.dict["A"] != "default"):
if(self.dict["B"] != "default"):
...
objectify.Element("Origin", A=self.dict["A"], B=self.dict["B"]...)
但如果您有一个或两个以上的密钥,这是一个丑陋且不实用的解决方案。
有没有办法先创建我的元素 origin = objectify.Element("Origin")
,然后添加我的字典键'(如果与 "default" 不同?
更有活力的东西,比如
for key in self.dict:
if(self.dict[key] != "default"):
origin.addAttribute(key=self.dict[key])
谢谢
我会将字典过滤为仅包含非 "default"
的值。
字典理解功能在这里帮了大忙。
示例:
data = {
"A": "foo",
"B": "default",
"C": "bar",
}
data = {key: value for key, value in data.items() if value != "default"}
print(data)
输出:
{'A': 'foo', 'C': 'bar'}