MysterioProgrammer91
MysterioProgrammer91

Reputation: 569

extracting elements from dictionary

I am using IBM watson tone analyzer an get output looking like this:

x= {
    u'document_tone': {
        u'tone_categories': [
            {
                u'category_id': u'social_tone',
                u'category_name': u'Social Tone',
                u'tones': [
                    {
                        u'score': 0.284871,
                        u'tone_id': u'openness_big5',
                        u'tone_name': u'Openness'},
                    {
                        u'score': 0.274523,
                        u'tone_id': u'conscientiousness_big5',
                        u'tone_name': u'Conscientiousness'},
                    {
                        u'score': 0.545545,
                        u'tone_id': u'extraversion_big5',
                        u'tone_name': u'Extraversion'},
                    {
                        u'score': 0.599657,
                        u'tone_id': u'agreeableness_big5',
                        u'tone_name': u'Agreeableness'},
                    {
                        u'score': 0.348563,
                        u'tone_id': u'emotional_range_big5',
                        u'tone_name': u'Emotional Range'}
                ]
            }
        ]
    }
}

If I just wanted to extract the 4 values from this how do I do it?

I want variables like Openness = 0.284871, Emotional Range = 0.348562

Upvotes: 0

Views: 146

Answers (2)

Bemmu
Bemmu

Reputation: 18217

tones = x['document_tone']['tone_categories'][0]['tones']
kv = {tone['tone_name']: tone['score'] for tone in tones}
print kv['Openness']
print kv['Emotional Range']

Upvotes: 2

Szabolcs
Szabolcs

Reputation: 4086

Try this:

>>> {tone['tone_name']:tone['score']  for cat in x['document_tone']['tone_categories'] for tone in cat['tones']}
{u'Emotional Range': 0.348563, u'Openness': 0.284871, u'Extraversion': 0.545545, u'Agreeableness': 0.599657, u'Conscientiousness': 0.274523}

Upvotes: 1

Related Questions