Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.01.2018
Сообщений: 10

Не работает перебор словаря и замена значения с проверкой по ключу

09.07.2022, 04:56. Показов 701. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте, друзья. Уже несколько часов не могу решить проблему.
Я работаю с Renpy (движок для визуальных новелл).
Не буду отнимать ваше время и вдаваться в описание ситуации (почему нужно именно это), но вот нужда:

перебрать словарь и проверить его на наличие переданного в функцию ключа, и если он совпадает с переданным, то значению этого ключа нужно задать 1, а всем остальным - 0. Показалось что просто, но вот сижу...

Код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#словарь (тут больше 3 пар. Это для простоты)
    stats_info_all_names = {
        'anna_info': 0,
        'kira_info': 0,
        'liza_info': 0,
    }
 
# Функция, которая не работает:
    def change_bool_dict(dic, name, x, y):
 
        for i, k in dic.items():
            if i == name:
                k = x
            else:
                k = y
# У меня словарь [B]dic[/B], и каждый его ключ нужно проверить на соответствие значению переменной [B]name[/B]
# И если оно совпало, то значению только этого ключа присвоить 1, а всем остальным присвоить 0
# Я по всякому пробовал, и с "for key in dic.keys():" - никак не работает. Может всё дело в особенности ренпай, но мне нужно 
# Получить правильный метод перебора с описанной мной логикой, чтобы знать, что приведённый вами пример
# 100% правильный и будет работать. И если уже не сработает, тогда дело в Ренпае.
# Я в отчаянии
 
# Это не важно, но скинул для общей картины, если кто знает Ренпай
screen stats_names():
    frame:
        vbox:
            if anna_meet:
                textbutton '[stats_info_all_names[anna_info]] [stats_info_all_names[kira_info]] [stats_info_all_names[liza_info]]':
                    # Вот в этой строке я вызываю функцию "change_bool_dict" и передаю 4 аргумента, включая словарь
                    action Function(change_bool_dict, stats_info_all_names, kira_info, 1, 0)
Добавлено через 42 минуты
Нашёл решение, но не нашёл, как удалить тему. Админы, удалите, пожалуйста. Более неактуально.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.07.2022, 04:56
Ответы с готовыми решениями:

Превратить первый список в набор ключей словаря, а второй список добавить к каждому ключу словаря в виде списка
Даны два списка с одинаковым количеством элементов. Создать новый словарь. Превратить первый список в набор ключей словаря, а второй список...

Значения по ключу 'add' нужно добавить в изменяемое множество, а значения по ключу 'remove' — убрать из множества
Написать функцию apply_diff(). Эта функция принимает два аргумента, первым из которых выступает множество, которое нужно будет изменять...

Не работает код вызова значения из словаря
В коде ниже не срабатывает код вызова переменной, хотя если прописать отдельно в интерпритатор, то все работает. from time import...

1
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
09.07.2022, 05:15
Так?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
names = {
    'anna_info': 0,
    'kira_info': 0,
    'liza_info': 0,
}
 
def change(dic, name, x, y):
    if name in dic:
        for k in dic:
            dic[k] = (y, x)[k==name]
 
change(names, 'kira_info', 1, 0)
print(names)
#{'anna_info': 0, 'kira_info': 1, 'liza_info': 0}
 
change(names, 'liza_info', 1, 0)
print(names)
# {'anna_info': 0, 'kira_info': 0, 'liza_info': 1}
# У меня словарь dic, и каждый его ключ нужно проверить на соответствие значению переменной name
# И если оно совпало, то значению только этого ключа присвоить 1, а всем остальным присвоить 0
Непонятно:
- всегда ли изначально словарь "занулёный", потому что если да, то перебирать все значения не нужно, можно просто установить нужное
- что должно произойти, если "оно не совпало", - нужно ничего не делать или все занулить?

Альтернативно, храните всегда "занулёный" словарь отдельно, и тогда можно будет всегда просто установить одно значение по известному ключу, без перебора
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.07.2022, 05:15
Помогаю со студенческими работами здесь

Сортировка словаря по ключу
Как отсортировать Dictionary <int, Vector3> по ключу, по возрастанию? Метода Sort() для словаря так сходу не нашёл. Надо компаратор...

Сортировка словаря по ЗНАЧЕНИЮ(не по ключу)
Собственно, как это сделать? Вот мой код: import sys from pprint import pprint #iter_count = int(sys.argv) # Помещаем дзен из...

DataBinding к элементу словаря по ключу
Всем привет. На форме есть ListBox и DataGrid. В качестве источника данных для ListBox служит набор ключей из словаря-свойства, описанного...

Получение данных словаря по ключу
Вопрос без кода, при необходимости попробую написать. Есть словарь с данными: "имя", "Вася" "фамилия",...

Сложение всех значений словаря по ключу
Есть словарь Dictionary<string, int>. Элементы в нём типа: Ключ: Цех 1, Значение: 2500 Ключ: Цех 1, Значение: 2300 Ключ: Цех 4,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru