0

I have a dictionary raw_data['list'] that have values structured like so:

k, v in sorted(raw_data['list'].items()):
    print(k, v)
    break

1001473688 {'resolved_id': '1001473688', 'item_id': '1001473688', 'word_count': '149', 'excerpt': '“The fraudulence paradox was that the more time and effort you put into trying to appear impressive or attractive to other people, the less impressive or attractive you felt inside — you were a fraud.', 'time_favorited': '0', 'favorite': '0', 'given_url': 'http://www.goodreads.com/quotes/564841-the-fraudulence-paradox-was-that-the-more-time-and-effort', 'is_index': '0', 'status': '0', 'sort_id': 3795, 'authors': {'3445796': {'author_id': '3445796', 'item_id': '1001473688', 'name': 'David Foster Wallace', 'url': 'http://www.goodreads.com/author/show/4339.David_Foster_Wallace'}}, 'time_read': '0', 'has_image': '0', 'has_video': '0', 'given_title': 'Quote by David Foster Wallace: “The fraudulence paradox was that the more t', 'resolved_title': '“The fraudulence paradox was that the more time and effort you put into trying to appear impressive or attractive to other people, the less impressive or attractive you felt inside — you were a fraud. And the more of a fraud you felt like, the harder you tried to convey an impressive or likable image of yourself so that other people wouldn’t find out what a hollow, fraudulent person you really were. Logically, you would think that the moment a supposedly intelligent nineteen-year-old became aware of this paradox, he’d stop being a fraud and just settle for being himself (whatever that was) because he’d figured out that being a fraud was a vicious infinite regress that ultimately resulted in being frightened, lonely, alienated, etc. But here was the other, higher-order paradox, which didn’t even have a form or name — I didn’t, I couldn’t.”', 'resolved_url': 'http://www.goodreads.com/quotes/564841-the-fraudulence-paradox-was-that-the-more-time-and-effort', 'time_added': '1438693251', 'time_updated': '1439849583', 'is_article': '1'}

Some of the values within raw_data['list'] dictionary have a 'tags' key like so:

{'excerpt': '',
 'favorite': '0',
 'given_title': 'carlcheo.com/wp-content/uploads/2014/12/which-programming-language-should-i',
 'given_url': 'http://carlcheo.com/wp-content/uploads/2014/12/which-programming-language-should-i-learn-first-pdf.pdf',
 'has_image': '0',
 'has_video': '0',
 'is_article': '0',
 'is_index': '0',
 'item_id': '999554490',
 'resolved_id': '999554490',
 'resolved_title': '',
 'resolved_url': 'http://carlcheo.com/wp-content/uploads/2014/12/which-programming-language-should-i-learn-first-pdf.pdf',
 'sort_id': 3026,
 'status': '0',
 'tags': {'programming': {'item_id': '999554490', 'tag': 'programming'}},
 'time_added': '1454096378',
 'time_favorited': '0',
 'time_read': '0',
 'time_updated': '1454096385',
 'word_count': '0'}

I need to extract out all the keys of 'tags' keys (aka the keys of the 'tags' values) into a list. I don't have much experience with nested dictionaries and struggling to figure out how I should write a nested for loop (if that is the most elegant way to the solution). Please let me know your thoughts. Thanks!

Keenan Burke-Pitts
  • 475
  • 2
  • 6
  • 17

1 Answers1

2

The following nested comprehension should work:

tags = [tag for v in raw_data['list'].values() for tag in v.get('tags', {})]
user2390182
  • 72,016
  • 6
  • 67
  • 89