Вход:Группировка строк из набора в словарь питона
>>> foo = {("A", "B"), ("A", "G"), ("A", "H"),
... ("B", "C"), ("B", "H"),
... ("C", "D"),
... ("D", "E"), ("D", "G"), ("D", "H"),
... ("E", "F"), ("E", "G"), ("E", "H"),
... ("F", "I"), ("F", "J"), ("F", "K"),
... ("G", "H")}
Я пытаюсь группировать свой сет, как это, я до сих пор не увенчались успехом, мне удалось сгруппировать их только как это.
Фактический выход:
>>> {k:set(x[1] for x in v) for k,v in itertools.groupby(sorted(foo), key=lambda x: x[0])}
{'B': {'C', 'H'}, 'E': {'H', 'G', 'F'}, 'D': {'E', 'G', 'H'}, 'A': {'B', 'G', 'H'}, 'C': {'D'}, 'G': {'H'}, 'F': {'I', 'K', 'J'}}
Однако, это мой желаемый результат:
foo1 = {"A": {"B", "G", "H"},
"B": {"A", "H", "C"},
"C": {"B", "D"},
"D": {"C", "E", "G", "H"},
"E": {"D", "F", "G", "H"},
"F": {"E", "I", "J", "K"},
"G": {"A", "D", "E", "H"},
"H": {"A", "B", "D", "E", "G"},
"I": {"F"},
"J": {"F"},
"K": {"F"}
}
Я думал, с перестановками или комбинациями? Но я до сих пор не знаю, как это сделать. Спасибо заранее. Редактировать: Добавлено изображение того, как связаны строки.
Что вы хотите, чтобы определить, как ул группируются? EDIT: подождите, я думаю, что вижу это, но, пожалуйста, поставьте это в вопросе. –
Учитывая, что набор Python и dict по существу неупорядочен, ожидаете ли вы определенный порядок для своего вывода? – Guillaume
Ваша сортировка по понятным пониманию действительно сортируется должным образом, но она не печатает ее вам так, как вы хотите? Edit: nvm, я вижу некоторые ошибки в том, что вы получили –