3 votes

Analyser une clé, une valeur à partir d'un fichier en un dictionnaire à l'aide de la compréhension de dictionnaire

J'ai cherché sur ce site des exemples similaires au mien, mais je n'ai trouvé aucune réponse.

Le fichier que je suis en train d'analyser est un fichier simple avec des paires clé-valeur séparées par un deux-points.

one:two
three:four
five:six
seven:eight
nine:ten
sample:demo

Je pensais qu'il devrait y avoir une solution simple en utilisant la compréhension de dictionnaire.

Ma première tentative était

fin = open('f00.txt', 'r')

L = {kv[0]:kv[1] for line in fin for kv in line.strip().split(':')}

cela a produit

{'o': 'n', 't': 'e', 'f': 'i', 's': 'a', 'e': 'i', 'n': 'i', 'd': 'e'}

La seule façon dont j'ai pu obtenir des résultats était la suivante

L = {line.strip().split(':')[0]:line.strip().split(':')[1] for line in fin}

Mais cela nécessitait d'appeler split deux fois (indexé par 0 et 1)

Une autre façon dont j'ai pu obtenir des résultats était :

d = {}
for line in fin:
    kv = line.strip().split(':')
    d[kv[0]] = kv[1]

{'one': 'two', 'three': 'four', 'five': 'six', 'seven': 'eight', 'nine': 'ten', 'sample': 'demo'}

Je me demandais juste s'il y avait une compréhension simple pour ce qui est une tâche triviale.

Merci pour toute contribution que vous pourriez apporter.

3voto

Ajax1234 Points 42210

Vous pouvez utiliser dict avec une compréhension :

result = dict(i.strip('\n').split(':') for i in open('filename.txt'))

Sortie:

{'one': 'two', 'three': 'four', 'five': 'six', 'seven': 'eight', 'nine': 'ten', 'sample': 'demo'}

1voto

brentertainer Points 1957
with open('f00.txt', 'r') as fh:
    d = dict(line.strip().split(':') for line in fh)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X