在Python中重新排列表

时间:2016-07-16 02:40:42

标签: python list sorting

我在Python中获得了以下列表。

v5z 3CD 300
vdz 3CD 100
vqz 3CD 200
vtz 3CD 10
v5z 3C2 22
vdz 3C2 3232
vqz 3C2 338
vtz 3C2 55
v5z 3Cfix 55
vdz 3Cfix 100
vqz 3Cfix 200
vtz 3Cfix 22

虽然我想知道如何重新排列它并获得:

vdz 3CD 100
vtz 3CD 10
vqz 3CD 200
v5z 3CD 300
vdz 3C2 3232
vtz 3C2 55
vqz 3Cfix 200
v5z 3Cfix 55
vdz 3Cfix 100
vtz 3Cfix 22
vqz 3Cfix 200
v5z 3Cfix 55

我想过创建字典,但它没有成功。有什么提示吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情

from pprint import PrettyPrinter

pprint = PrettyPrinter(4).pprint

lst = [
    ['v5z', '3CD', 300],
    ['vdz', '3CD', 100],
    ['vqz', '3CD', 200],
    ['vtz', '3CD', 10],
    ['v5z', '3C2', 22],
    ['vdz', '3C2', 3232],
    ['vqz', '3C2', 338],
    ['vtz', '3C2', 55],
    ['v5z', '3Cfix', 55],
    ['vdz', '3Cfix', 100],
    ['vqz', '3Cfix', 200],
    ['vtz', '3Cfix', 22],
]
sort_index = {
    "vdz3CD100": 0,
    "vtz3CD10": 1,
    "vqz3CD200": 2,
    "v5z3CD300": 3,
    "vdz3C23232": 4,
    "vtz3C255": 5,
    "vqz3Cfix200": 6,
    "v5z3Cfix55": 7,
    "vdz3Cfix100": 8,
    "vtz3Cfix22": 9,
    "vqz3Cfix200": 10,
    "v5z3Cfix55": 11
}

slst = sorted(lst, key=lambda e: sort_index.get("{0[0]}{0[1]}{0[2]}".format(e), 100))
pprint(slst)

尝试使用您选择的排序索引 - 在您的情况下使用最后一个col数据。

我已经改变了sort_index,但它根本不是一个好的解决方案