【发布时间】:2015-03-14 02:03:57
【问题描述】:
我有一个按正确顺序排序的 id 列表:
ids = [1, 2, 4, 6, 5, 0, 3]
我还有一个字典列表,以某种随机方式排序:
rez = [{'val': 7, 'id': 1}, {'val': 8, 'id': 2}, {'val': 2, 'id': 3}, {'val': 0, 'id': 4}, {'val': -1, 'id': 5}, {'val': -4, 'id': 6}, {'val': 9, 'id': 0}]
我的意图是以对应于ids 的方式对rez 列表进行排序:
rez = [{'val': 7, 'id': 1}, {'val': 8, 'id': 2}, {'val': 0, 'id': 4}, {'val': -4, 'id': 6}, {'val': -1, 'id': 5}, {'val': 9, 'id': 0}, {'val': 2, 'id': 3}]
我试过了:
rez.sort(key = lambda x: ids.index(x['id']))
但是这种方式对我来说太慢了,因为 len(ids) > 150K,而且每个 dict 实际上都有很多键(有些值是字符串)。任何建议如何以最 Pythonic 但仍然最快的方式做到这一点?
【问题讨论】:
标签: python list sorting dictionary