我有一个列表的OrderedDict,例如:
data = OrderedDict([('a', [3, 2, 1]]), ('b', [z, y, x])])
我想按数据对这两个列表进行排序[' 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'])))])
但这需要另一个循环来整理其他列。缩短此示例 - 还有更多字典条目。是否有更多的Pythonic方法,比如operator.itemgetter?
感谢。
答案 0 :(得分:0)
我现在将采取自己的答案,直到某人提交更精致的内容。这是我的解决方案,但看起来很笨重:
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]