2016-07-16 3 views
0

Ich habe die folgende Liste in Python.Neuanordnen der Tabelle in 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 

Obwohl ich frage mich, wie es neu zu ordnen und erhalten:

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 

Ich dachte, das Wörterbuch zu schaffen, aber es hat nicht geklappt. Irgendwelche Tipps?

+0

Meinst du eine Liste? –

+0

Wenn @MohamedYousof korrekt ist und Ihre Datenstruktur eine "Liste" ist, können Sie dieses Problem selbst lösen, indem Sie [die Dokumentation zum Sortieren] lesen (https://docs.python.org/2/library/functions.html#). sortiert)! (Sie können eine beliebige Funktion definieren, um zu bestimmen, wie Elemente verglichen/sortiert werden.) Das heißt, die zweite Liste ist keine einfache Neuanordnung der ersten Liste; Es gibt beispielsweise mehr "3Cfix" -Einträge in der zweiten als der ersten. Wie würdest du die Beziehung zwischen den beiden "Arrangements" beschreiben? –

+0

Ja, es war eine Liste – Monica

Antwort

0

Sie können so etwas wie dieses

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) 

Versuchen Sie, eine Art Index Ihrer Wahl versuchen - in Ihrem Fall mit der letzten Spalte Daten.

Ich habe den sort_index geändert, aber es ist überhaupt keine gute Lösung

+0

Ich habe geschrieben: sort_index = {'vdz': 0, 'vtz': 1, 'vqz': 2, 'v5z': 3} slst = sortiert (lst, key = lambda e: sort_index [e [0 ]]) Obwohl ich immer noch nicht weiß, wie ich die benötigte Liste bekomme – Monica

Verwandte Themen