我有以下字典:
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'}
答案 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'}
哪个符合您想要的结果