2016-06-02 13 views
0

Ich habe diese Methode gesehen, um Listen basierend auf dict-Werten als Schlüssel zu sortieren.Liste der Listen basierend auf einem dict-Wert als Schlüssel sortieren

Original Question here

Können wir diese Methode Liste der Listen in jeder Liste basiert auf den ersten Wert sortieren?

trial_dict = {1:'ABC', 2:'PQR', 3:'DEF'} 
trial_list = [['ABC','-','+','/','+','-','*'], 
       ['DEF','-','+','/','+','-','*'], 
       ['PQR','-','+','/','+','-','*']] 

Nach dem Sortieren:

trial_list = [['ABC','-','+','/','+','-','*'], 
       ['PQR','-','+','/','+','-','*'], 
       ['DEF','-','+','/','+','-','*']] 
+3

Kann * du * das tun? Hast du es versucht? –

+0

Was ist, wenn trial_dict '{1: 'ABC', 2: 'ABC', 3: 'ABC'}'? Sind Sie sicher, dass Sie das Wörterbuch nicht anders herum haben wollen? – donkopotamus

Antwort

1

können Sie sorted()-Funktion verwenden.

trial_dict = {1:'ABC', 2:'PQR', 3:'DEF'} 
trial_dict_inv = {v: k for k, v in trial_dict.items()} 
trial_list = [['ABC','-','+','/','+','-','*'], 
      ['DEF','-','+','/','+','-','*'], 
      ['PQR','-','+','/','+','-','*']] 


print sorted(trial_list, key= lambda z:trial_dict_inv[z[0]]) 

Ausgang:

[[ 'ABC', '-', '+', '/', '+', '-', '*'], [ 'PQR ',' - ',' + ','/',' + ',' - ',' * '], [' DEF ',' - ',' + ','/',' + ',' - ',' * ']]

+0

Danke für die Antwort. – athultuttu

Verwandte Themen