Как преобразовать значения словаря в наборы словарей

#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. Спасибо вам за ваш ценный вклад.