使用字典理解修改字典而不创建新的字典

时间:2016-05-09 12:00:14

标签: python list dictionary

我有以下字典:

d = {'lnsd-02': 'manager', 'lnsd-03': 'manager', 'lnsd-01': 'quorum', 'lnsd-04': 'manager', 'lnsd-05': 'manager'}

我正在尝试对列表推导的类似行进行字典理解。

for i in d:
    if i[-2:] in ('02', '05'):
            d[i]='quorum-manager'

如何将字典理解应用于上述代码并更改某些键的值而不创建新字典? 类似下面的内容

d[i] = {i: 'quorum-manager' for i in d if i[-2:] in ('02', '05')}

最后,我需要将原始字典的值更改为

d = {'lnsd-02': 'quorum-manager', 'lnsd-03': 'manager', 'lnsd-01': 'quorum', 'lnsd-04': 'manager', 'lnsd-05': 'quorum-manager'}

1 个答案:

答案 0 :(得分:2)

使用dict.update方法:

d.update({i: 'quorum-manager' for i in d if i[-2:] in ('02', '05')})

comprehension 将创建一个新词典,但此词典仅用于更新原始词典d的内容

鉴于您的原始数据:

>>> d = {'lnsd-02': 'manager', 'lnsd-03': 'manager', 
    'lnsd-01': 'quorum', 'lnsd-04': 'manager', 'lnsd-05': 'manager'}

并申请

>>> d.update({i: 'quorum-manager' for i in d if i[-2:] in ('02', '05')})

结果是

{'lnsd-04': 'manager', 'lnsd-03': 'manager', 'lnsd-01': 'quorum', 
'lnsd-05': 'quorum-manager', 'lnsd-02': 'quorum-manager'}

哪个符合您想要的结果