Python字典替换值

2020-12-04 10:51:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本有20000多条词条的字典,其中目前只有唯一的单词和单词在源文本中使用的次数(但丁的意大利神曲)。

我想把所有的条目替换成一个实际的定义。有没有一种简单的方法来迭代那些以数字作为值的关键字,以便替换(当我研究其含义时)?

字典开始:

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

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

3条回答
网友
1楼 ·

如果您需要一个声明性的解决方案,可以使用^{}来更改dict中的值

或者是这样:

my_dict.update({'key1': 'value1', 'key2': 'value2'})

或者像这样:

my_dict.update(key1='value1', key2='value2')
网友
2楼 ·

不能对特定值(或值类型)进行选择。您要么做一个反向索引(将数字映射回(列表)键),要么每次都必须循环所有值。

如果仍按任意顺序处理数字,也可以循环查看所有项:

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
网友
3楼 ·

这里有一个函数可以找到您的密钥并替换您的值。

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}

相关问题