#python #python-3.x #dictionary #set
#python #python-3.x #словарь #установить
Вопрос:
Я пытаюсь решить некоторые проблемы с графом, но застрял на полпути. У меня есть словарь наборов python, но я хотел бы преобразовать исходные значения словаря (которые являются наборами) в словарь таким образом, чтобы каждое значение в наборе становилось ключом, который имел бы другое значение 1. Я думаю, это то, что называется вложенным словарем — я не уверен.
Я перебрал dict.values()
, присвоенный переменной xxx, и использовал dict.fromkeys(xxx, 1)
код, и это сработало, но я не могу интегрировать результат обратно в исходный словарь.
Вот пример словаря:
d = {'35': {'1', '37', '36', '71'}, '37': {'1', '35'}}
Я хочу, чтобы результат выглядел как:
d = {35: {1 : 1, 37 : 1, 36 : 1, 71 : 1}, 37: {1 : 1, 35 : 1}}
если вы заметили, исходные значения словаря стали собственными словарями, а апострофы («) отключены.
Кто-нибудь может мне помочь, пожалуйста, или дать мне указания. Спасибо
Ответ №1:
Вам просто нужно немного разобраться в списке:
def convert(input):
return {key: {val: 1 for val in vals} for key, vals in input.items()}
print(convert({'35': {'1', '37', '36', '71'}, '37': {'1', '35'}}))
# {'35': {'1': 1, '37': 1, '36': 1, '71': 1}, '37': {'1': 1, '35': 1}}
Комментарии:
1. БУМ! Большое спасибо. Я изменил значения на int (key) и int (val), чтобы преобразовать элементы strings в integer. Спасибо
Ответ №2:
Вы почти на месте. Просто оберните ключи и значения с помощью int
:
{int(k):dict.fromkeys(map(int, v), 1) for k, v in d.items()}
Вывод:
{35: {37: 1, 71: 1, 36: 1, 1: 1}, 37: {35: 1, 1: 1}}
Комментарии:
1. Спасибо вам за ваш ценный вклад.