我有以下字典:
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'}
最佳答案
使用 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'}
符合你想要的结果
关于python - 使用字典理解修改字典而不创建新字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37115289/