2016-07-16 99 views
0

我在Python中獲得以下列表。在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 

我想創建的字典,但沒有成功。有小費嗎?

+0

你是指一個列表? –

+0

如果@MohamedYousof是正確的,而你的數據結構是一個'list',你可以通過研究[排序文檔]來解決這個問題(https://docs.python.org/2/library/functions.html#排序)! (你可以定義一個任意函數來確定如何比較/排序元素。)也就是說,第二個列表不是第一個列表的簡單重新排列;例如,第二個中的「3Cfix」條目比第一個更多。你如何描述這兩種「安排」之間的關係? –

+0

是的,這是一個列表 – Monica

回答

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) 

試試你選擇的排序指標 - 在你的情況與過去的山坳數據。

我改變了sort_index,但它並不是一個好的解決方案

+0

我寫過:sort_index = {'vdz':0,'vtz':1,'vqz':2,'v5z':3} slst = sorted(lst,key = lambda e:sort_index [e [0 ]])雖然我仍然不知道如何獲得所需的列表 – Monica