离散数学,偏序关系,第六问能否提供些例子
离散数学,偏序关系,第六问能否提供些例子
例如编程中,有如下的python的列表l
l=[
{"a":1,"b":2},
{"a":4,"b":1},
{"a":2,"b":5},
{"a":1,"b":4},
{"a":1,"b":1},
{"a":1,"b":3}
]
对列表l
做排序,只根据a
字段做排序
l.sort(key=lambda item:item['a'])
结果如下:
[
{'a': 1, 'b': 2},
{'a': 1, 'b': 4},
{'a': 1, 'b': 1},
{'a': 1, 'b': 3},
{'a': 2, 'b': 5},
{'a': 4, 'b': 1}
]
可以看到字段a
是按从小到大排序了,但是字段a
都是1
的时候,这几个元素并没有按字段b
排序:
{'a': 1, 'b': 2},
{'a': 1, 'b': 4},
{'a': 1, 'b': 1},
{'a': 1, 'b': 3},
如果我们使用多字段排序
l.sort(key=lambda item:(item['a'],item['b']))
则得到排序后的结果是先按a
字段排序,a
字段相同的再按b
字段排序:
[
{'a': 1, 'b': 1},
{'a': 1, 'b': 2},
{'a': 1, 'b': 3},
{'a': 1, 'b': 4},
{'a': 2, 'b': 5},
{'a': 4, 'b': 1}
]
可以看到a都为1时,是按元素b从小到大排序的:
{'a': 1, 'b': 1},
{'a': 1, 'b': 2},
{'a': 1, 'b': 3},
{'a': 1, 'b': 4}
偏序在编程中是有实际重要的作用的,排序中比较两个元素的时候,元素之间的比较关系是否满足偏序,会导致排序结果的不同。更多的应用,在数据库中的查询中,有 order by
的关键字,可以指定数据库查询中根据1个到多个字段做排序。