我有一个OrderedDict列表,例如:
data = OrderedDict([('a', [3, 2, 1]]), ('b', [z, y, x])])
我想按data['a']对两个列表进行排序。结果如下:
OrderedDict([('a', [1, 2, 3]]), ('b', [x, y, z])])
元素在所有列表中保持相对索引位置。
我可以通过跟踪索引来实现:
sorted_data = sorted([(t, i) for t, i in zip(data['a'],range(len(data['a'])))])
,但这需要另一个循环来排序其他列。这个例子被缩短了——有更多的字典条目。是否有更python化的方法,比如使用operator.itemgetter?
谢谢。
在有人提交更完善的答案之前,我先接受我自己的答案。这是我的解决方案,但看起来很笨拙:
sortedData = sorted([(t, i) for t, i in zip(data['a'],range(len(data['a'])))])
sortedIndex = [i[1] for i in sortedData]
for key in data.keys():
data[key] = [ data[key][i] for i in sortedIndex]