更改字典中的列表项

时间:2012-12-07 15:18:30

标签: python django

我的django项目中有一个这样的字典,对应于配置字段:

{u'active': True,
 u'alert': {u'item_sent': True,
            u'emails': [u'test@test.com', u'test@test.com'],
            u'job': u'500.00',
            u'in_negative': False}}

如何遍历上面的每封电子邮件并将'.fake'附加到它们的末尾?我是为了这个 - "test@test.com.fake"

我这样做但没有更改列表项:

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

2 个答案:

答案 0 :(得分:3)

我看不出为什么你的代码无法更改列表项,但试试这个:

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

答案 1 :(得分: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()