आपका JSON एक एकल ऑब्जेक्ट है जिसमें अंदर एक ऑब्जेक्ट होता है, इसलिए जब आप इसे पढ़ते हैं तो आपको एक डिक्शनरी मिलती है, जिसमें एक डिक्शनरी होती है। आप सूची में आइटम 0 तक पहुंचकर अपने शब्दकोश का उपयोग कर सकते हैं, जैसा कि नीचे दिखाया गया है:
json1_data = json.loads(json1_str)[0]
अब आप डेटापॉइंट में संग्रहीत डेटा को उसी तरह एक्सेस कर सकते हैं जैसे आप उम्मीद कर रहे थे:
datapoints = json1_data['datapoints']
मेरे पास एक और सवाल है अगर कोई भी काट सकता है: मैं इन डेटापॉइंट्स में पहले तत्वों का औसत लेने की कोशिश कर रहा हूं (यानी डेटापॉइंट्स [0] [0])। बस उन्हें सूचीबद्ध करने के लिए, मैंने डेटापॉइंट्स [0: 5] [0] करने की कोशिश की, लेकिन मुझे जो भी मिला है, वह दोनों तत्वों के साथ पहला डेटापॉइंट है, क्योंकि पहले 5 डैटापॉइंट्स को केवल पहले तत्व वाले को प्राप्त करने की इच्छा थी। क्या इसे करने का कोई तरीका है?
datapoints[0:5][0]
वह नहीं करता जो आप उम्मीद कर रहे हैं। datapoints[0:5]
केवल पहले 5 तत्वों से युक्त एक नई सूची का टुकड़ा लौटाता है, और फिर [0]
इसके अंत में जोड़ देने से उस परिणामी खोज का पहला तत्व बन जाएगा । आपको जो परिणाम चाहिए, उसे प्राप्त करने के लिए आपको एक सूची समझने की आवश्यकता है ।
[p[0] for p in datapoints[0:5]]
यहाँ माध्य की गणना करने का एक सरल तरीका है:
sum(p[0] for p in datapoints[0:5])/5. # Result is 35.8
यदि आप NumPy स्थापित करने के इच्छुक हैं , तो यह और भी आसान है:
import numpy
json1_file = open('json1')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)[0]
datapoints = numpy.array(json1_data['datapoints'])
avg = datapoints[0:5,0].mean()
# avg is now 35.8
,
NumPy की सरणियों के लिए स्लाइसिंग सिंटैक्स के साथ ऑपरेटर का उपयोग करना व्यवहार है जिसे आप मूल रूप से सूची स्लाइस के साथ उम्मीद कर रहे थे।