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

标签 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'}

最佳答案

使用 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/

相关文章:

python - Django http 连接超时

python - 根据字典中的另一个值从字典列表中检索一个值

Python:使用列表项代替全局变量

java - 两次检查列表中的字符串是否包含来自不同列表的字符串的一部分,并在处理列表后返回唯一列表

python - 按行和列写入 csv

python-3.x - 将字典的特定字典转换为 pandas 数据框 - pandas

python - 使用python打开draw.io文件

python - 用Python创建动态论坛签名生成器

python - B 列中具有匹配 A 列值的行的总和值

android - 如何获得地板等级