C'est un record de défi de 100 langues de traitement knock 2015. L'environnement est Ubuntu 16.04 LTS + Python 3.5.2 : : Anaconda 4.1.1 (64 bits). Cliquez ici pour une liste des coups passés (http://qiita.com/segavvy/items/fb50ba8097d59475f760).
artist.json.gz est un fichier de la base de données musicale ouverte MusicBrainz qui est converti au format JSON et compressé au format gzip. Dans ce fichier, les informations sur un artiste sont stockées sur une seule ligne au format JSON. Le contour du format JSON est le suivant.
champ Moule Contenu Exemple id Identifiant unique entier 20660 gid Identifiant global Chaîne "ecf9f3a3-35e9-4c58-acaa-e707fba45060" name nom d'artiste Chaîne "Oasis" sort_name Nom de l'artiste (pour le diagnostic de l'ordre) Chaîne "Oasis" area Lieu d'activité Chaîne "United Kingdom" aliases alias Liste des objets de dictionnaire aliases[].name alias Chaîne "oasis" aliases[].sort_name Alias (pour l'alignement) Chaîne "oasis" begin Date de début de l'activité dictionnaire begin.year Année de début d'activité entier 1991 begin.month Mois de début d'activité entier begin.date Date de début de l'activité entier end Date de fin de l'activité dictionnaire end.year Fin d'année d'activité entier 2009 end.month Mois de fin d'activité entier 8 end.date Date de fin de l'activité entier 28 tags marque Liste des objets de dictionnaire tags[].count Nombre de balises entier 1 tags[].value Contenu du tag Chaîne "rock" rating Évaluation Objet dictionnaire rating.count Nombre de votes pour la notation entier 13 rating.value Valeur de notation (valeur moyenne) entier 86 Envisagez de stocker et de récupérer les données artist.json.gz dans les bases de données Key-Value-Store (KVS) et orientées document. Utilisez LevelDB, Redis, Kyoto Cabinet, etc. comme KVS. MongoDB a été adopté comme base de données orientée document, mais CouchDB, RethinkDB, etc. peuvent également être utilisés.
Trouvez le nombre d'artistes dont le lieu d'activité est "Japon" à l'aide de la base de données construite en> 60.
main.py
# coding: utf-8
import leveldb
fname_db = 'test_db'
#LevelDB ouvert
db = leveldb.LevelDB(fname_db)
#La valeur est'Japan'Énumérer
clue = 'Japan'.encode()
result = [value[0].decode() for value in db.RangeIter() if value[1] == clue]
#Affichage du nombre
print('{}Cas'.format(len(result)))
Résultat d'exécution
22821
Le contenu de l'enregistrement a été énuméré en acquérant l'itérateur avec LevelDB.RangeIter ()
.
C'est tout pour le 63e coup. Si vous avez des erreurs, je vous serais reconnaissant de bien vouloir les signaler.
Recommended Posts