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

coo*_*l77 2 python dictionary list

我有以下字典:

d = {'lnsd-02': 'manager', 'lnsd-03': 'manager', 'lnsd-01': 'quorum', 'lnsd-04': 'manager', 'lnsd-05': 'manager'}
Run Code Online (Sandbox Code Playgroud)

我正在尝试在类似的列表理解上使用字典理解。

for i in d:
    if i[-2:] in ('02', '05'):
            d[i]='quorum-manager'
Run Code Online (Sandbox Code Playgroud)

如何在不创建新字典的情况下将字典理解应用于上述代码并更改某些键的值?像下面这样的东西

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

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

d = {'lnsd-02': 'quorum-manager', 'lnsd-03': 'manager', 'lnsd-01': 'quorum', 'lnsd-04': 'manager', 'lnsd-05': 'quorum-manager'}
Run Code Online (Sandbox Code Playgroud)

Ant*_*ala 6

使用dict.update方法:

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

理解将创建一个新的字典,但这个字典将只被用来更新内容原来的字典d


鉴于您的原始数据:

>>> d = {'lnsd-02': 'manager', 'lnsd-03': 'manager', 
    'lnsd-01': 'quorum', 'lnsd-04': 'manager', 'lnsd-05': 'manager'}
Run Code Online (Sandbox Code Playgroud)

并申请

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

结果是

{'lnsd-04': 'manager', 'lnsd-03': 'manager', 'lnsd-01': 'quorum', 
'lnsd-05': 'quorum-manager', 'lnsd-02': 'quorum-manager'}
Run Code Online (Sandbox Code Playgroud)

哪个符合您想要的结果