我有一本包含20 000多个条目的字典,目前只有单词和源文本中使用该单词的次数(Dante的意大利神曲)。
我想通过所有条目来处理所有条目,并将其替换为实际定义。是否有一种简单的方法来迭代关键字,这些关键字具有值作为数字以便替换(当我研究其含义时)?
字典开始:
{'corse': 378, 'cielo,': 209, 'mute;': 16, 'torre,': 11, 'corsa': 53, 'assessin': 21, 'corso': 417, 'Tolomea': 21} # etc.
将建议用于研究和定义关键字的应用程序的排序。
答案 0 :(得分:50)
您无法选择特定值(或值的类型)。您要么制作反向索引(将数字映射回(键)键),要么每次都必须遍历所有值。
如果您正在以任意顺序处理数字,您也可以遍历所有项目:
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
答案 1 :(得分:23)
如果您需要声明性解决方案,可以使用dict.update()
更改字典中的值。
my_dict.update({'corse': 'my new definition'})
答案 2 :(得分:5)
如果你遍历字典就得到了密钥,所以假设你的字典在一个名为data
的变量中,并且你有一些函数find_definition()
来获取定义,你可以做类似下面的事情:
for word in data:
data[word] = find_definition(word)
答案 3 :(得分:0)
我认为这可以帮助您解决问题。
假设您有一个这样的字典:
dic0 = {0:"CL1", 1:"CL2", 2:"CL3"}
您要通过此值更改值:
dic0to1 = {"CL1":"Unknown1", "CL2":"Unknown2", "CL3":"Unknown3"}
您可以使用下面的代码来更改dic0
正确遵守的dic0t01
的值,而不必担心字典中的索引:
for x, y in dic0.items():
dic0[x] = dic0to1[y]
现在您拥有:
>>> dic0
{0: 'Unknown1', 1: 'Unknown2', 2: 'Unknown3'}
答案 4 :(得分:-2)
data = {key1: value1, key2: value2, key3: value3}
for key in data:
if key == key1:
data[key1] = change
print(data)
这将替换 key1: value1 到 key1: change
答案 5 :(得分:-52)
这是一个可以找到你的钥匙并替换你的价值的功能。
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}