我的问题是,我不明白这个 lambda 函数对 xml 文档进行排序。 它有效,但我不明白。 lambda 的表达式是: (child.tag,child.get('volume')) 我不明白。
有人可以解释一下吗?
谢谢
#Example of xml document
<warehouse>
<sale product="name1" price="1">
<idSale>1</idSale>
<volume>10</volume>
<store>store1</store>
</sale>
</warehouse>
Here the python code:
#importing xml document as a tree
ree = ET.parse("warehouse.xml")
root = tree.getroot()
#sorting by volume
root[:] = sorted(root, key=lambda child: (child.tag,child.get('volume')))
另外,如果我使用 as 表达式:
(child.get('volume'))
如果我传递“产品”而不是数量,它就会排序......
我错过了什么?
元组和列表使用相应元素的比较按字典顺序进行比较。这意味着要比较相等,每个元素必须比较相等,并且两个序列必须具有相同的类型和相同的长度。
如果不相等,则序列的排序与其第一个不同元素的排序相同。例如,cmp([1,2,x], [1,2,y]) 返回与 cmp(x,y) 相同的结果。如果对应的元素不存在,则将较短的序列排在前面(例如,[1,2] < [1,2,3]).
例如:
(1, 2) > (3, 4) # False
(1, 2) > (3, 4, 5) # False
(6, 1) > (1, 10) # True