2016-05-11 20 views
0

Ich bin neu in Python und Codierung im Allgemeinen. Meine Frage ist, wie man die Nummern der Wörterbücher in einer dieser Strings findet. Diese ist eine Datei namens dataHistory.jsonzählen Sie die Anzahl der Wörterbücher in einer Zeichenfolge Python

{ 
"lists": [ 
     { 
      "number": 1, 
      "name": "A" 
     }, 
     { 
      "number": 2, 
      "name": "B" 
     }, 
     { 
      "number": 3, 
      "name": "C" 
     }, 
     { 
      "number": 4, 
      "name": "D" 
     }, 
     { 
      "number": 5, 
      "name": "E" 
     }, 
     { 
      "number": 6, 
      "name": "F" 
     }, 
     { 
      "number": 7, 
      "name": "G" 
     }, 
     { 
      "number": 8, 
      "name": "H" 
     }, 
     { 
      "number": 9, 
      "name": "I" 
     }, 

    ] 
} 

Das Ergebnis, das ich zu bekommen eine Zahl drucken 9

auch als Erinnerung dataHistory.json in mehr Wörterbücher hinzufügen.

Mein Code Ich begann.

def _get_data_history(self): 
     theHistory = open(self.history_path) 
     holdHistory = json.load(theHistory) 
     theHistory.close() 
     return holdHistory 

theDataHistory = obj._get_data_history() 
print theDataHistory['RestaurantsHistory'] # stuck here 

Dank

+0

Woher kommt diese Zeichenfolge 'RestaurantsHistory' kommen aus? Es ist nicht in der JSON-Datei. –

+0

Die Wörterbücher befinden sich in 'Listen', also sollte' print len ​​(theDataHistory ['lists']) 'es tun. – tdelaney

+0

Ich habe eine Antwort hinzugefügt, aber dann habe ich festgestellt, dass ich Ihre Frage falsch interpretiert habe und nach der Anzahl der "Diktate" gefragt habe, nicht der Zahl 9 in einem der "Diktate". Also habe ich die Antwort gelöscht. – quapka

Antwort

2

Vielleicht, aber keine Ahnung, wo 'RestaurantsHistory' kommt aus:

print len(theDataHistory['RestaurantsHistory']['lists']) 

sonst dies:

print len(theDataHistory['lists']) 
+1

Tatsächlich verwendet er in seinem Beispiel "Listen" anstelle von "Liste". Neben diesem Tippfehler funktioniert Ihre Lösung. – LAL

+1

Ich benutze auch 'Listen', siehe meine Antwort nochmal ;-) –

1

Wenn Sie eine Liste (oder Tupel haben , Set, Wörterbuch, String oder viele andere Möglichkeiten) von allem (auch eine Mischung aus Dingen), len(the_list) gibt die Anzahl der Elemente an. len ist kurz für die Länge.

Ihre Beispiel-JSON ergibt ein Wörterbuch mit einem Schlüssel "lists". Sie können den Wert mit erreichen und die Anzahl der Elemente wird somit len(json_data["lists"]) sein. Hier json_data ist entweder theDataHistory oder theDataHistory['RestaurantsHistory'], es ist nicht klar, was am Ende Ihres Codes passiert ist, da es keine RestaurantsHistory in der Probe gibt.

+0

danke das ist informativ. – Rusher

0

len (s)

Return die Länge (die Anzahl der Elemente) eines Objekts. Das Argument kann eine Sequenz (z. B. eine Zeichenfolge, Byte, Tupel, Liste oder Bereich) oder eine Auflistung (z. B. ein Wörterbuch, eine Gruppe oder eine eingefrorene Gruppe) sein.

ref doc.

dict = {'lists':[{'number':1,'name':'A'}, 
       {'number':2,'name':'B'}, 
       {'number':3,'name':'C'}] 
     } 
print len(dict) # outputs 1 
print len(dict['lists']) # outputs 3 
print len(dict['lists'][0]) # output 2 
+0

danke! für verschiedene Wege, die sich ihm nähern. – Rusher

Verwandte Themen