0
votes

Relation Graphique en Python

Je veux calculer le nombre d'amis pour chaque personne donnée un graphique relationnel sans utiliser de bibliothèques . Le graphique est représenté comme des listes de listes:

graphique = [[[[[[[[[[[[[[[[[[[[[[[[[[A, B], [C, B], [B, D], [E]]

Sortie du dictionnaire attendu: {'A': 2, 'B': 3, 'C': 2, 'D': 1, 'E': 0}

Remarque: puisque E n'a pas d'amis, e devrait être 0


3 commentaires

Qu'est-ce que tu as essayé jusque-là? Montrez-nous du code!


Sonner comme un devoir


C'était une question d'entretien @alderven


4 Réponses :


-1
votes

Vous pouvez donc faire comme ça xxx


1 commentaires

Mauvaise réponse à nouveau. E n'a pas d'amis - devrait avoir 0 valeur.



1
votes

Vous pouvez utiliser une bibliothèque Python spécifique aux graphiques appelés NetworkX . J'ai changé les données pour être plus faciles à charger.

import networkx as nx
graph = [['A','B'],['A','C'],['C','B'],['B','D']]

G = nx.Graph()
G.add_edges_from(graph)
G.add_node('E')

dict(G.degree)                                                         
#  {'A': 2, 'B': 3, 'C': 2, 'D': 1, 'E': 0}


3 commentaires

D'accord, Nextworkx Suites Meilleur pour cette situation, je ne sais pas pourquoi @kash refuse d'utiliser lib et d'aimer reconstruire des roues.


C'était une question d'entrevue, c'est pourquoi.


@ Kash Ahh, c'est un mauvais signe d'avertissement. Essayez de ne pas prendre le travail. S'ils vous demandent de faire des questions d'entretien sans bibliothèques, tout le travail pourrait être comme celui-ci. Ils ont peut-être un problème avec différentes licences de logiciels (GPL, etc.) ou avez besoin de vous de tout faire de zéro afin qu'elles puissent avoir la propriété intellectuelle (mais vous finirez ensuite de le maintenir aussi). C'est un gaspillage de votre vie. Vous pourrez vous faire plus ailleurs. À la fin, vous devrez équilibrer combien vous avez besoin d'argent avec quel type d'impact vous souhaitez avoir en tant que Dev logiciel.



0
votes

obtenu la solution. Y a-t-il une meilleure façon de faire cela? XXX


2 commentaires

si x in v est inutile. parce que x in v est toujours vrai . Et vous n'avez pas à faire x dans dct.keys () . C'est la même chose que x dans dct


graphique = [[[[[A ',' B '], [' A ',', 'C'], ['C', 'B'], ['B', 'D'], ['E' ]] DCT = {} pour V dans le graphique: pour x in v: si x dans dct: DCT [x] + = 1 autre: DCT [x] = len (v) -1 impression (DCT) {'A': 2, 'B': 3, 'C': 2, 'D': 1, 'E': 0}



4
votes

solution simple sans changer le format d'entrée

>>> graph = [['A', 'B'], ['A', 'C'],['C', 'B'], ['B', 'D'], ['E']]
>>> from collections import defaultdict
>>> friends_counter = defaultdict(int)
>>> for friends in graph:
...     for person in friends:
...         friends_counter[person] += len(friends) - 1
>>> dict(friends_counter)
{'A': 2, 'B': 3, 'C': 2, 'D': 1, 'E': 0}


0 commentaires