2016-08-07 10 views
0

Ich versuche, den Zähler zu zählen, welches Datum am meisten im folgenden Code erscheint.Wie Counter zählen die richtigen Zeichenfolgen

from collections import Counter 

with open('dates.json', 'rb') as f: 
    data = f.readlines() 

c = Counter(data) 
print (c.most_common()[:10]) 

sind die JSON-Daten als Liste wie

["Sun Aug 07 01:50:13 +0000 2016", "Sun Aug 07 01:50:13 +0000 2016", "Sun Aug 07 01:50:13 +0000 2016", "Sun Aug 07 01:50:13 +0000 2016", "Sun Aug 07 01:50:13 +0000 2016", "Sun Aug 07 01:50:13 +0000 2016", "Sun Aug 07 01:50:13 +0000 2016", "Sun Aug 07 01:50:13 +0000 2016", "Sun Aug 07 01:50:13 +0000 2016"] 

gespeichert würde ich die Ausgabe etwas ähnliches wie dies sein erwartet (von einem anderen Programm packte)

[('Sun Aug 07 02:29:45 +0000 2016', 4), ('Sun Aug 07 02:31:05 +0000 2016', 4), ('Sun Aug 07 02:31:04 +0000 2016', 3), ('Sun Aug 07 02:31:08 +0000 2016', 3), ('Sun Aug 07 02:31:22 +0000 2016', 3)] 

Aber das ist mein Ausgang

[(48, 72), (32, 53), (49, 27), (34, 18), (117, 18), (58, 18), (65, 9), (51, 9), (103, 9), (43, 9)] 

Ich verstehe nicht wirklich, was seine Zählung gibt

Antwort

1

Statt readlines() Sie json.load() verwenden sollten, die JSON-Daten in eine Python-Liste zu laden:

import json 

with open('dates.json', 'r') as f: 
    data = json.load(f) 
+0

jetzt haben wir den Fehler Typeerror: das JSON-Objekt str werden muss, , nicht 'Bytes' – Mark

+1

@Mark entfernen Sie das 'b' aus dem Dateiöffnungsmodus ... –