我有一个字典列表(实际上是一个包含字典的对象列表),像这样,代表一个表:
rows = [
{ '11': 14, '12': 0, '13': 0, '14': 20 },
{ '13': 8 },
{ '11': 7, },
{ '11': 2, '14': 2 },
{ '12': 2, '13': 2 },
{ '11': 3, '14': 3 },
{ '11': 1, '14': 1 },
{ '13': 5 },
{ '11': 8, },
{ '11': 0, '14': 0 },
{ '11': 9, },
{ '14': 10 },
{ '13': 19 },
{ '14': 12 },
{ '13': 15 },
{ '12': 3, '13': 3 }
]
我想按表格中的每一列对它们进行排序:
[
{ '11': 0, '14': 0 },
{ '11': 1, '14': 1 },
{ '11': 2, '14': 2 },
{ '11': 3, '14': 3 },
{ '14': 10 },
{ '14': 12 },
{ '11': 7 },
{ '11': 8 },
{ '11': 9 },
{ '11': 14, '12': 0, '13': 0, '14': 20 },
{ '12': 2, '13': 2 },
{ '12': 3, '13': 3 },
{ '13': 5 },
{ '13': 8 },
{ '13': 15 },
{ '13': 19 }
]
有一些可能的“正确”订单,但这是其中之一。
我已经看过并尝试了各种解决方案,但它们似乎都涉及将None
放在列表的开头或结尾,这是我不想要的。例如:
rows.sort(key=lambda r: [r.get(c, 0) for c in ['11', '12', '13', '14']])
有些物品无法比较(因为它们没有共同的钥匙),但比较功能无法返回'我不知道',可以吗?
我使用的是Python 3.5,但与2.7和3.4保持兼容会很不错。