Python字典替换值

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (372)

我有一个字典,有2万多个词条,目前只包含唯一的单词和在原文中使用这个词的次数(但丁的神曲,意大利语)。

我希望在找到所有条目时,用实际的定义替换值。有没有一种简单的方法来迭代那些以数字作为值来替换的关键字(就像我研究的那样)?

字典的开头是:

{'corse': 378, 'cielo,': 209, 'mute;': 16, 'torre,': 11, 'corsa': 53, 'assessin': 21, 'corso': 417, 'Tolomea': 21}  # etc.

这是一种应用程序,它将建议一个关键字来研究和定义。

提问于
用户回答回答于

下面是一个函数,它将找到您的键并替换您的值。

current_dict = {'corse': 378, 'cielo': 209, 'mute': 16}
print(current_dict)
def replace_value_with_definition(key_to_find, definition):
    for key in current_dict.keys():
        if key == key_to_find:
            current_dict[key] = definition

replace_value_with_definition('corse', 'Definition of "corse"')
print(current_dict)

产出如下:

{'corse': 378, 'cielo': 209, 'mute': 16}
{'corse': 'Definition of "corse"', 'cielo': 209, 'mute': 16}

如果您发现遍历字典花费的时间太长,请尝试一个生成器函数:

def gen_replace_value_with_definition(key_to_find, definition):
    for key in current_dict.keys():
        if key == key_to_find:
            current_dict[key] = definition
            yield True
    yield False

found = False
while not found:
    found = next(gen_replace_value_with_definition('corse', 'Definition of "corse" via generator'))

print(current_dict)

产出:

{'corse': 'Definition of "corse" via generator', 'cielo': 209, 'mute': 16}
用户回答回答于

不能选择特定的值(或值的类型)。您可以创建一个反向索引(映射号返回到(键列表)),或者必须遍历。

如果您正在以任意顺序处理数字,您还可以循环遍历所有项:

for key, value in inputdict.items():
    # do something with value
    inputdict[key] = newvalue

否则,我将使用反向索引:

from collections import defaultdict

reverse = defaultdict(list)
for key, value in inputdict.items():
    reverse[value].append(key)

现在您可以按值查找键:

for key in reverse[value]:
    inputdict[key] = newvalue

扫码关注云+社区

领取腾讯云代金券