Es ist ein Herausforderungsrekord von 100 Sprachverarbeitungsklopfen 2015. Die Umgebung ist Ubuntu 16.04 LTS + Python 3.5.2 : : Anaconda 4.1.1 (64-Bit). Klicken Sie hier, um eine Liste der vergangenen Schläge anzuzeigen (http://qiita.com/segavvy/items/fb50ba8097d59475f760).
artist.json.gz ist eine Datei in der geöffneten Musikdatenbank MusicBrainz, die in das JSON-Format konvertiert und im gzip-Format komprimiert wird. In dieser Datei werden Informationen zu einem Künstler in einer Zeile im JSON-Format gespeichert. Der Umriss des JSON-Formats lautet wie folgt.
Feld Schimmel Inhalt Beispiel id Eindeutige Kennung ganze Zahl 20660 gid Globale Kennung String "ecf9f3a3-35e9-4c58-acaa-e707fba45060" name Künstlername String "Oasis" sort_name Künstlername (zur Auftragsdiagnose) String "Oasis" area Ort der Tätigkeit String "United Kingdom" aliases alias Liste der Wörterbuchobjekte aliases[].name alias String "Oase" aliases[].sort_name Alias (zur Ausrichtung) String "Oase" begin Beginn der Aktivität Wörterbuch begin.year Beginn der Aktivität ganze Zahl 1991 begin.month Aktivitätsstartmonat ganze Zahl begin.date Beginn der Aktivität ganze Zahl end Enddatum der Aktivität Wörterbuch end.year Ende des Aktivitätsjahres ganze Zahl 2009 end.month Aktivitätsende Monat ganze Zahl 8 end.date Enddatum der Aktivität ganze Zahl 28 tags Etikett Liste der Wörterbuchobjekte tags[].count Anzahl der Markierungen ganze Zahl 1 tags[].value Tag-Inhalt String "rock" rating Bewertung Wörterbuchobjekt rating.count Anzahl der Stimmen für die Bewertung ganze Zahl 13 rating.value Bewertungswert (Durchschnittswert) ganze Zahl 86 Erwägen Sie das Speichern und Abrufen von artist.json.gz-Daten in Key-Value-Store (KVS) und dokumentenorientierten Datenbanken. Verwenden Sie LevelDB, Redis, Kyoto Cabinet usw. als KVS. MongoDB wurde als dokumentenorientierte Datenbank übernommen, es können jedoch auch CouchDB, RethinkDB usw. verwendet werden.
Ermitteln Sie die Anzahl der Künstler mit dem Aktivitätsort "Japan" anhand der in> 60 erstellten Datenbank.
main.py
# coding: utf-8
import leveldb
fname_db = 'test_db'
#LevelDB geöffnet
db = leveldb.LevelDB(fname_db)
#Wert ist'Japan'Aufzählen
clue = 'Japan'.encode()
result = [value[0].decode() for value in db.RangeIter() if value[1] == clue]
#Nummernanzeige
print('{}Fall'.format(len(result)))
Ausführungsergebnis
22821
Der Registrierungsinhalt wurde durch Erwerb des Iterators mit "LevelDB.RangeIter ()" aufgelistet.
Das ist alles für den 63. Schlag. Wenn Sie Fehler haben, würde ich mich freuen, wenn Sie darauf hinweisen könnten.
Recommended Posts