Étant donné un dictionnaire
x = {'b': {d}, 'a': {'b', 'c'}, 'd': {'g'}, 'f': {'d', 'g'}, 'c': {'e', 'f'}, 'e': {d}}
Je veux une fonction qui imprimera:
a -> ['b', 'c']
b -> ['d']
c -> ['e', 'f']
d -> ['g']
e -> ['d']
f -> ['d', 'g']
J'ai écrit ceci:
def graph_as_str(graph : {str:{str}}) -> str:
graphString = ''
for key in sorted(graph):
graphString += ' {} -> ['.format(key)
for value in sorted(graph[key]):
graphString += '\'{}\', '.format(value)
graphString = graphString[:-2]
graphString += ']\n'
return graphString
Cela fonctionne mais est horrible. Comment puis-je améliorer cela?
4 réponses
En supposant que vous vouliez dire que votre mission était la suivante:
x = {'b': {'d'}, 'a': {'b', 'c'}, 'd': {'g'}, 'f': {'d', 'g'}, 'c': {'e', 'f'}, 'e': {'d'}}
(Les valeurs associées aux clés 'b' et 'e' sont entre guillemets, et la valeur associée à la clé 'a' est {'b', 'c'}, pas {'c', 'd'})
Ensuite, cela donnera la sortie que vous avez répertoriée:
for k in sorted(x.keys()):
print("{} -> {}".format(k, sorted(list(x[k]))))
OP a demandé une fonction et a donné un format précis:
x = {'b': {'d'}, 'a': {'c', 'b'}, 'd': {'g'}, 'f': {'d', 'g'}, 'c': {'e', 'f'}, 'e': {'d'}}
def graph_as_str(graph: {str:{str}}) -> str:
return "\n".join(" {} -> {}".format(key, sorted(value)) for key, value in sorted(graph.items()))
x = {'b': {'d'}, 'a': {'c', 'd'}, 'd': {'g'}, 'f': {'d', 'g'}, 'c': {'e', 'f'}, 'e': {'d'}}
def graph_as_str(x):
sorted_x = sorted(x)
for i in x:
print i, "-->", list(x[i])
J'espère que cela résout ce dont vous avez besoin et est beaucoup plus simple. Prendre plaisir!!!!
En supposant que d doit également être cité:
x = {'b': {'d'}, 'a': {'c', 'b'}, 'd': {'g'}, 'f': {'d', 'g'},
'c': {'e', 'f'}, 'e': {'d'}}
x_str = '\n'.join([key + ' -> ' + str(sorted(list(val)))
for key, val in sorted(x.iteritems())])
print(x_str)
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.