Словарь Python заменяет значения - программирование
Подтвердить что ты не робот

Словарь Python заменяет значения

У меня есть словарь с 20 000 плюс записи, на данный момент просто уникальное слово и количество раз, когда слово использовалось в исходном тексте (Dante Divine Comedy на итальянском языке).

Я хотел бы использовать все записи, заменяющие значение фактическим определением, когда я их нахожу. Есть ли простой способ итерации по ключевым словам, имеющим в качестве значения число, чтобы заменить (как я исследую значение)?

Словарь начинается:

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

Сортировка приложения, которое предложит ключевое слово для исследования и определения.

4b9b3361

Ответ 1

Вот функция, которая найдет ваш ключ и заменит ваше значение.

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}

Ответ 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

Если вам нужно декларативное решение, вы можете использовать dict.update() для изменения значений в диктовке.

Либо так:

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

или вот так:

my_dict.update(key1='value1', key1='value2')

Ответ 4

Если вы перебираете словарь, вы получаете ключи, поэтому, если ваш словарь находится в переменной с именем data, и у вас есть некоторая функция find_definition(), которая получает определение, вы можете сделать что-то вроде следующего:

for word in data:
    data[word] = find_definition(word)