Клавиши Python «Взрываются» в Dict

Учитывая диктовку, подобную приведенной ниже, как мне «взорвать» ключи, чтобы создать новую диктовку с разделенными ключами? Каждый ключ должен быть разделен на «n».

original_dict = {"AB n DC": [12, 13], "JH n UY": [22, 1]}

new_dict = {"AB": [12, 13], "DC": [12, 13], "JH": [22, 1], "UY":[22,1]}
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
107
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий
new_dict = {k: v for orig_k, v in original_dict.items() for k in orig_k.split(' n ')}

Приложение: Обратите внимание, что все v для разделенных клавиш являются ссылками на один и тот же список; возможно, используйте k: list(v) для создания копий (зависит от того, чего именно хочет ОП, но, вероятно, стоит отметить).

tobias_k 26.06.2024 15:07

@tobias_k Да, зависит от последующих операций со значениями.

busfighter 26.06.2024 15:11

Чувак, тег Python не теряет своей скорости. Опереди меня на несколько минут.

ipodtouch0218 26.06.2024 15:13

@ipodtouch0218 мне впервые повезло ответить на такой вопрос с такой скоростью :)

busfighter 26.06.2024 15:15
{kk: original_dict[k] for k in original_dict for kk in k.split(' n ')}

следует сделать

Но следует отметить, что при этом не учитывается тот факт, что если «AB ∩ DC» равно [12,13], то AB может быть [12, 17, 42, 69, 13] и DC [12, 37, 13]. 99, 13]

Не говоря уже о случаях, когда ваш исходный текст выглядит примерно так:

original_dict = {"AB n JH": [12, 13], "JH n UY": [22, 1]}

Итак, мой ответ (и другой ответ, который пришел, пока я печатал) просто игнорирует то, что означает n, и просто взрывается.

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

Начните с инициализации new_dict как пустого словаря, затем пройдите через original_dict и разделите его на " n ", чтобы создать список новых ключей.

Переберите эти new_keys и присвойте каждому исходное значение из original_dict.

new_dict = {}
for key, value in original_dict.items():
    # Split keys on " n " or any value here
    new_keys = key.split(" n ")
    for each_new_key in new_keys:
        new_dict[each_new_key] = value

print(new_dict)

Другие вопросы по теме