2010-11-07 3 views
3

J'essaie de remplacer la valeur de l'élément de liste par la valeur recherchée dans le dictionnaire. Comment faire?python: parcourez la liste et remplacez les éléments par les valeurs de dictionnaire correspondantes

 
list = [1, 3, 2, 10] 

d = {'id': 1, 'val': 30},{'id': 2, 'val': 53}, {'id': 3, 'val': 1}, {'id': 4, 'val': 9}, {'id': 5, 'val': 2}, {'id': 6, 'val': 6}, {'id': 7, 'val': 11}, {'id': 8, 'val': 89}, {'id': 9, 'val': 2}, {'id': 10, 'val': 4} 

for i in list: 
    for key, v in d.iteritems(): 
     ??? 
     ??? 

donc à la fin je me attends:

 
list = [30, 1, 53, 4] 

merci

+3

Ne pas ombrer les built-ins. –

+0

@systempuntout: Un tuple de dicts. –

+1

C'est très étrange Dict. Si ce sera {1:30, 2: 53 ...} les choses seront plus faciles. – demas

Répondre

14
D2 = dict((x['id'], x['val']) for x in D) 
L2 = [D2[x] for x in L] 
+0

Que faire si le problème est inverse? – FaCoffee

0
td = (
     {'val': 30, 'id': 1}, 
     {'val': 53, 'id': 2}, 
     {'val': 1, 'id': 3}, 
     {'val': 9, 'id': 4}, 
     {'val': 2, 'id': 5}, 
     {'val': 6, 'id': 6}, 
     {'val': 11, 'id': 7}, 
     {'val': 89, 'id': 8}, 
     {'val': 2, 'id': 9}, 
     {'val': 4, 'id': 10} 
     ) 

    source_list = [1, 3, 2, 10] 
    final_list = [] 

    for item in source_list: 
     for d in td: 
      if d['id'] == item: 
       final_list.append(d['val']) 

    print('Source : ', source_list) 
    print('Final : ', final_list) 

Résultat

Source : [1, 3, 2, 10] 
Final : [30, 1, 53, 4] 
Questions connexes