3

私はそのようなJSONファイルを持っています:

[
{
"course": "CMPT 102 D1", 
"instructor": "hamarneh", 
"students": [
  "axc5", 
  "csf10", 
  "ctu1", 
  "nmw15", 
  "nsm12", 
  "ppy1", 
  "qtg13", 
  "tim1", 
  "tkd10", 
  "vhm8", 
  "vsv1", 
  "wps1", 
  "xup12", 
  "yqt6"
], 
"title": "Scientific Cmpt.Prgm"
}]

そして、これがPythonでの私のコードです:

import json
json_data=open('jsonfile')
data=json.load(json_data)
print(data['students'])

しかし、それはエラーを示しています:

   print(data['students'])
   TypeError: list indices must be integers, not str

助けてください!

もう 1 つの質問: JSON ファイルに、上記のような構造を持つ多くのコースが含まれているとします。どうすれば次のようなことができますか:

Select students, count(course) as course_number from tblstudent
group by students
4

1 に答える 1

4

JSON にはlistが含まれており、その中に 1 つの辞書があります。辞書を囲む2 つの角括弧と があります[]

最初の要素を選択します。

print(data[0]['students'])

クイックデモ:

>>> print(data)
[{'instructor': 'hamarneh', 'course': 'CMPT 102 D1', 'title': 'Scientific Cmpt.Prgm', 'students': ['axc5', 'csf10', 'ctu1', 'nmw15', 'nsm12', 'ppy1', 'qtg13', 'tim1', 'tkd10', 'vhm8', 'vsv1', 'wps1', 'xup12', 'yqt6']}]
>>> print(data[0]['students'])
['axc5', 'csf10', 'ctu1', 'nmw15', 'nsm12', 'ppy1', 'qtg13', 'tim1', 'tkd10', 'vhm8', 'vsv1', 'wps1', 'xup12', 'yqt6']

ただの簡単な印刷でこれを自分で見つけた可能性があることに注意してくださいdata

これが複数のコースのリストであり、学生ごとにカウントする必要がある場合は、整数を含む、学生をキーにした辞書を設定します。を使用collections.defaultdict()すると、少し簡単になります。

from collections import defaultdict

courses_per_student = defaultdict(int)

for course in data:
    for student in course['students']:
        courses_per_student[student] += 1
于 2013-10-03T07:15:15.557 に答える