python - 当不确定它包含哪些属性时,将已解析的 XML 中的元素添加到字典中的更好方法

标签 python

抱歉标题错误。但我的问题很“简单”。我有这个:

if "unit" in pin.attrib:
    test_dict["pins"].append({
        "type": pin.attrib["type"],
        "unit": pin.attrib["unit"], 
        "name":pin.text
    })
else:
    test_dict["pins"].append({
        "type": pin.attrib["type"],
        "name":pin.text
    })    

因为并非所有元素都具有属性[“unit”]。如果需要检查多个属性(或它们的组合),这种方式会变得非常麻烦。

(基本上我想要的是这样的:

伪代码:

    test_dict["pins"].append({
        "type": pin.attrib["type"],
        if "unit" in pin.attrib: "unit": pin.attrib["unit"], 
        "name":pin.text
    })

这可能吗?

最佳答案

你可以这样做:

test_dict["pins"].append(dict(
    {'name': pin.text},
    **{k: pin.attrib[k] for k in ['type', 'unit'] if k in pin.attrib}
))

关于python3.5+您可以使用以下语法:

test_dict["pins"].append({
    ** {k: pin.attrib[k] for k in ['type', 'unit'] if k in pin.attrib},
    "name": pin.text
})

关于python - 当不确定它包含哪些属性时,将已解析的 XML 中的元素添加到字典中的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56681989/

相关文章:

python - 使用 Python、FreeTDS 和 pyodbc 从 Raspberry Pi 3 查询 MSSQL server 2012

python - 从 pandas DataFrame 创建术语密度矩阵的有效方法

python - 检查整个 block 是否有任何带有内部文本的 child

python - geckodriver 可执行文件需要在路径中

python - 将多个 div 类中的数据抓取到 pandas 数据框中

python - 使用 Django 从其他应用程序导入模型时遇到问题

python - 需要帮助实现洪水填充算法

python - Multiprocessing.Pool中如何区分进程?

python - 从 Python 中的 PDF 中提取带有字体详细信息(样式、大小、颜色、斜体等)的文本

python - 如何使用新维度 reshape xarray 数据