2010-11-07 52 views
3

我想用字典中查找的值替換列表元素值,我該怎麼做?python:遍歷列表並用相應的字典值替換元素

 
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(): 
     ??? 
     ??? 

所以在最後我期待:

 
list = [30, 1, 53, 4] 

謝謝

+3

不要影響內置插件。 – 2010-11-07 09:17:30

+0

@systempuntout:一組字符串。 – 2010-11-07 09:19:47

+1

這是很奇怪的字典。如果是{1:30,2:53 ...},事情會更容易。 – demas 2010-11-07 09:21:34

回答

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

如果問題出現了,該怎麼辦? – FaCoffee 2015-10-20 18:17:19

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) 

結果

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