मुझे एक सरणी के अंदर एक मान तक पहुंचने में कुछ परेशानी हो रही है जिसमें एक शब्दकोश और दूसरी सरणी है।

यह इस तरह दिख रहा है:

[{'name': 'Alex',
  'number_of_toys': [{'classification': 3, 'count': 383},
   {'classification': 1, 'count': 29},
   {'classification': 0, 'count': 61}],
  'total_toys': 473},
 {'name': 'John',
  'number_of_toys': [{'classification': 3, 'count': 8461},
   {'classification': 0, 'count': 3825},
   {'classification': 1, 'count': 1319}],
  'total_toys': 13605}]

मैं प्रत्येक 'वर्गीकरण' के लिए 'गिनती' संख्या तक पहुंचना चाहता हूं। उदाहरण के लिए, 'नाम' एलेक्स के लिए, यदि 'वर्गीकरण' 3 है, तो कोड 383 की 'गिनती' देता है, और इसी तरह अन्य वर्गीकरणों और नामों के लिए।

आपकी सहायताके लिए धन्यवाद!

-1
Esteban Trujillo 6 मार्च 2020, 01:30

2 जवाब

सुनिश्चित नहीं है कि आपका प्रश्न क्या पूछता है, लेकिन अगर यह सिर्फ एक मानचित्रण अभ्यास है तो यह आपको सही रास्ते पर ले जाएगा।

def get_toys(personDict):
    person_toys = personDict.get('number_of_toys')
    return [ (toys.get('classification'), toys.get('count')) for toys in person_toys]

def get_person_toys(database):
    return [(personDict.get('name'), get_toys(personDict)) for personDict in database]

यह परिणाम है:

[('Alex', [(3, 383), (1, 29), (0, 61)]), ('John', [(3, 8461), (0, 3825), (1, 1319)])]

1
Zack 6 मार्च 2020, 01:55

यह पिछले उत्तर की तरह सुरुचिपूर्ण नहीं है क्योंकि यह मूल्यों पर पुनरावृति नहीं करता है, लेकिन यदि आप विशिष्ट तत्वों का चयन करना चाहते हैं, तो ऐसा करने का यह एक तरीका है:

data = [{'name': 'Alex',
  'number_of_toys': [{'classification': 3, 'count': 383},
   {'classification': 1, 'count': 29},
   {'classification': 0, 'count': 61}],
  'total_toys': 473},
 {'name': 'John',
  'number_of_toys': [{'classification': 3, 'count': 8461},
   {'classification': 0, 'count': 3825},
   {'classification': 1, 'count': 1319}],
  'total_toys': 13605}]    

import pandas as pd
df = pd.DataFrame(data)
print(df.loc[0]['name'])
print(df.loc[0][1][0]['classification'])
print(df.loc[0][1][0]['count'])

जो देता है:

Alex
3
383
0
Plato77 6 मार्च 2020, 02:05