【发布时间】:2019-07-26 18:28:18
【问题描述】:
我正在编写一个 python 脚本,它首先解析“n”个 xml,并创建一个 dict 的 dict,其键值是 xml 属性(在嵌套的 dicts 内)。 现在,我想对存储的这些嵌套字典进行分组,以了解哪些 xml 是相同的并且可以分组到同一个组中。 我想要一些 pythonic 的方式来分组相同的字典,其中每个字典碰巧有相同的键。
- 我尝试解析每个字典并从值创建一个字符串。 将此字符串存储在 dict 中,其中 key = string 和 value = xmlNames 列表。现在,当我转到下一个字典并形成字符串时,如果它已经存在于字典中,那么我只需将 xml 附加到这个字典的值。
- 我认为基于 groupby() 或其他方法可以有更好的方法。
list_of_xmls = ["a.xml", "b.xml", "c.xml", "d.xml"]
dictXml = dict()
for xml in list_of_xmls:
dictXml[xml] = parseXml(xml) # Returns dict by parsing xml (key-value)
# parseXml(xml)
# It parses xml and returns dict like:
dict for a.xml = {"config":"4", "location":"C:\\xyz", "Group":"amcat"}
dict for b.xml = {"config":"4", "location":"C:\\xyz", "Group":"amcat"}
dict for c.xml = {"config":"5", "location":"C:\\mno", "Group":"alien"}
dict for d.xml = {"config":"5", "location":"C:\\mno", "Group":"alien"}
# Supoose, a.xml and b.xml have same values for all keys
# Same for c.xml and d.xml
# So, I should have two groups (a.xml, b.xml) and (c.xml, d.xml)
###########Some processing on the above dict ######
finalOutput = [["a.xml", "b.xml], ["c.xml", "d.xml"]]
输出应该是可以合并的组列表(基本上是列表列表)。
此外,dictXml 可以是任何其他数据结构,也可以是字典列表。 有什么想法吗?
基本上,整个想法都给出了一个 xml 列表,我需要根据其中的键值来确定哪些 xml 是相同的。在某个列表中对相同的 xml 进行分组,并对每个组进行处理。
【问题讨论】:
-
parseXml长什么样子? -
它适用于内部的某些架构。但是,它在处理完 xml 后最终返回一个带有键和值的 dict。没有任何其他细节。此外,无法更改 parseXML。
-
那个字典看起来怎么样?最终期望的输出是什么?视觉示例将不胜感激
-
感谢 Devesh 的关注。更新了代码中的 parseXml。希望对您有所帮助。
-
您希望最终输出的样子如何?
标签: python python-2.7 list dictionary itertools