J'essaie de résoudre une question de simple test pratique:Ordonné Dictionnaire et tri
Parse le fichier CSV:
- Trouver uniquement les lignes où l'utilisateur a commencé avant le 6 Septembre, 2010 .
- Ensuite, commander les valeurs de la colonne « mots » dans l'ordre croissant (par date de début)
- Retour à la compilation phrase « cachée »
Le fichier csv a 19 colonnes et 1000 lignes de données. La plupart d'entre eux ne sont pas pertinents. Comme l'indique le problème, nous ne sommes concernés que par le tri de la colonne start_date dans l'ordre croissant pour obtenir le mot associé à partir de la colonne 'words'. Ensemble, les mots donneront la phrase "cachée".
Les dates dans le fichier source sont au format UTC, donc j'ai dû les convertir. Je suis sur le point maintenant où je pense avoir les bonnes lignes sélectionnées, mais j'ai des problèmes de tri des dates.
Voici mon code:
import csv
from collections import OrderedDict
from datetime import datetime
with open('TSE_sample_data.csv', 'rb') as csvIn:
reader = csv.DictReader(csvIn)
for row in reader:
#convert from UTC to more standard date format
startdt = datetime.fromtimestamp(int(row['start_date']))
new_startdt = datetime.strftime(startdt, '%Y%m%d')
# find dates before Sep 6th, 2010
if new_startdt < '20100906':
# add the values from the 'words' column to a list
words = []
words.append(row['words'])
# add the dates to a list
dates = []
dates.append(new_startdt)
# create an ordered dictionary to sort the dates... this is where I'm having issues
dict1 = OrderedDict(zip(words, dates))
print dict1
#print list(dict1.items())[0][1]
#dict2 = sorted([(y,x) for x,y in dict1.items()])
#print dict2
Quand je print dict1
je me attends d'avoir un dictionnaire ordonné avec les mots et les dates inclus que des articles. Au lieu de cela, ce que je reçois est plusieurs dictionnaires ordonnés pour chaque paire clé-valeur créée.
La prochaine fois que le débogage de canard en caoutchouc fixe, simplement ne pas poster. Il est peu probable que quelqu'un d'autre trouve cela utile. – jonrsharpe
Oui, bien sûr que vous le feriez! Cela aurait été super utile * spécifiquement pour vous *. Mon point est que c'est * seulement * utile spécifiquement pour vous. Comment une autre personne ayant le même problème trouverait-elle cela, ou utiliserait-elle votre réponse pour résoudre son problème, à moins qu'elle n'écrive * presque exactement le même code *? Le but est de créer des questions et réponses de haute qualité, voir le [tour]. J'apprécie que vous fassiez un effort, et je suis content que vous ayez résolu votre problème, mais cela ne le rend pas utile. – jonrsharpe