2012-12-07 37 views
0

我有這樣一本字典在我的Django項目對應於一個配置領域:是一本字典內的更改列表項

{u'active': True, 
u'alert': {u'item_sent': True, 
      u'emails': [u'[email protected]', u'[email protected]'], 
      u'job': u'500.00', 
      u'in_negative': False}} 

我如何遍歷每個上面的電子郵件和附加'.fake'到他們結束了嗎?我會爲這個 - "[email protected]"

我這樣做,但它並沒有改變列表項:

for p in practice: 
    email_count = len(p.config['alert']['emails']) 
    if email_count > 0: 
     print 'WE HAVE EMAILS' 
     i = 0 
     while i < email_count:   
      p.config['alert']['emails'][i] += '.fake' 
      print p.config['alert']['emails'][i] 
      i += 1 
     p.save() 

回答

0

原來我在編輯之前需要先將p.config分配給一個變量。 'P'代表一個練習對象。

for p in practices: 
    config = p.config 

    config['alert']['emails'] = [ 
     '.{0}.fake'.format(x) 
     for x in config['alert']['emails'] 
    ] 

    p.config = config 

    p.save() 
3

我不明白爲什麼你的代碼沒有改變列表項,但試試這個:

for p in practice: 
    p.config['alert']['emails'] = [e + '.fake' for e in p.config['alert']['emails']]