Je veux calculer le nombre d'amis pour chaque personne donnée un graphique relationnel Sortie du dictionnaire attendu: Remarque: puisque E n'a pas d'amis, graphique = [[[[[[[[[[[[[[[[[[[[[[[[[[A, B], [C, B], [B, D], [E]] CODE> P>
{'A': 2, 'B': 3, 'C': 2, 'D': 1, 'E': 0} Code> P> P>
4 Réponses :
Vous pouvez donc faire comme ça
Mauvaise réponse à nouveau. E n'a pas d'amis - devrait avoir 0 valeur.
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}
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.
obtenu la solution. Y a-t-il une meilleure façon de faire cela?
si x in v code> est inutile. parce que
x in v code> est toujours
vrai code>. Et vous n'avez pas à faire
x dans dct.keys () code>. C'est la même chose que
x dans dct code>
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} Code>
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}
Qu'est-ce que tu as essayé jusque-là? Montrez-nous du code!
Sonner comme un devoir
C'était une question d'entretien @alderven