Python字典替换值

use*_*335 40 python dictionary python-3.x

我有一本包含20 000多个条目的字典,目前只有单词和源文本中使用该单词的次数(Dante的意大利神曲).

我想通过所有条目来处理所有使用实际定义替换值的条目.是否有一种简单的方法来迭代关键字,这些关键字具有作为值的数字以便替换(当我研究其含义时)?

字典开始:

{'corse': 378, 'cielo,': 209, 'mute;': 16, 'torre,': 11, 'corsa': 53, 'assessin': 21, 'corso': 417, 'Tolomea': 21}  # etc.
Run Code Online (Sandbox Code Playgroud)

一种应用程序的排序,它将建议用于研究和定义的关键字.

Mar*_*ers 58

您无法选择特定值(或值的类型).您要么制作反向索引(将数字映射回(键)键),要么每次都必须遍历所有值.

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

for key, value in inputdict.items():
    # do something with value
    inputdict[key] = newvalue
Run Code Online (Sandbox Code Playgroud)

否则我会使用反向索引:

from collections import defaultdict

reverse = defaultdict(list)
for key, value in inputdict.items():
    reverse[value].append(key)
Run Code Online (Sandbox Code Playgroud)

现在,您可以按值查找键:

for key in reverse[value]:
    inputdict[key] = newvalue
Run Code Online (Sandbox Code Playgroud)

  • @nofinator:在Python 2中,你使用`iteritems()`来阻止创建一个新的列表列表,其中len(字典)元组引用字典中的键值对(而只是在迭代时浪费).字典内容本身*始终*加载到内存中.这不适用于此,因为问题标记为Python 3 :-) (2认同)

Rot*_*eti 33

如果您需要声明性解决方案,可以使用dict.update()更改dict中的值.

my_dict.update({'key1': 'value1', 'key2': 'value2'})
Run Code Online (Sandbox Code Playgroud)


And*_*ark 7

如果你遍历一个字典就得到了密钥,所以假设你的字典在一个被调用的变量中data并且你有一些函数find_definition()可以得到这个定义,你可以做类似下面的事情:

for word in data:
    data[word] = find_definition(word)
Run Code Online (Sandbox Code Playgroud)