Python 3: как удалить лишнее в списке Python

Ниже приведен пример для справки:

pairlist = [("A","B"),("Q","R"),("S","T"),("C","E"),("F","G"),("G","I"),("A","Y"),("B","C"),("B","D")]

Мне нужно получить более взаимосвязанные значения (напрямую или косвенно) кортежей из этого списка

Например: См. приведенный ниже список, где «A» связан с «B» в кортеже («A», «B») в парном списке [0], а «B» связан с «C» в парном списке [7] и т. д. взаимосвязано опосредованно в большом количестве, тогда как "Г" менее взаимосвязано.

pairs1 = ["A", "B", "C", "D", "E", "Y"] #More Interconnected indirectly

pairs2 = ["G", "F", "I"] #Less Interconnected indirectly

Приведенные ниже кортежи в списке Ни где не связаны ни с одним.

("Q","R"),("S","T")

Несмотря на то, что «G» повторяется и не связан с мажором один раз, он отдельно взаимосвязан с другими элементами, что очень мало связано с другими.

Как получить список, как показано ниже

pairs = ["A", "B", "C", "D", "E", "Y"]

Пожалуйста, объясните свой пример немного подробнее.

Raunaq Jain 03.02.2019 09:50

Вы ищете самый большой связный компонент на графике. Попробуйте поискать в Интернете с этим термином, и вы сможете что-то найти.

Ray Toal 03.02.2019 09:51

Возможный дубликат Подключенные компоненты Python

Mykola Zotko 03.02.2019 10:16

Отредактировано с более подробной информацией, не могли бы вы обратиться еще раз и поделиться решением

Manjunathan Venkatesan 03.02.2019 10:48
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете воспользоваться пакетом networkx:

import networkx as nx

pairlist = [("A","B"),("C","E"),("F","G"),("G","I"),("A","Y"),("B","C"),("B","D")]

G = nx.Graph()
G.add_edges_from(pairlist)
for i in nx.connected_components(G):
    print(i)
# {'B', 'C', 'E', 'D', 'Y', 'A'}
# {'I', 'F', 'G'}

Graph

Для построения графика используйте:

import matplotlib.pyplot as plt

nx.draw(G, with_labels=True)
plt.show()

или если вы используете блокнот Jupyter:

%matplotlib inline
nx.draw(G, with_labels=True)

Большое спасибо за ваше решение ... Удивительная работа, вы проделали отличную работу.

Manjunathan Venkatesan 03.02.2019 10:52

Как получить график или график?

Manjunathan Venkatesan 03.02.2019 10:53

@ManjunathanVenkatesan Я добавил в свой ответ информацию о том, как нарисовать график.

Mykola Zotko 03.02.2019 11:11

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