lukaabra
lukaabra

Reputation: 83

How to create a tuple of certain values in a dictionary comprehension?

I have a lot of dictionaries that look like this:

data_sample = {'query_result': {'imdbid': 50083, 'file name': '12.Angry.Men.1957.Criterion.Collection.720p.BluRay.x264-WiKi.fre.srt', 'IDSubtitleFile': '1952985556'}, 
                'movie directory': 'C:\\...\\Movies\\12 Angry Men 1957 1080p BluRay x264 AAC - Ozlem'}

Basically:

data_collection = [data_sample] * 10

My desired output is a tuple which consists of:

(query_result["IDSubtitleFile"], movie_directory)

How would I go about creating the desired output using list comprehension? I know how I'd do it using for loops, but I'm struggling to manage it using list comprehension. The only idea I have is this but it throws an error and it doesn't make any sense actually:

[[(value["IDSubtitleFile"], value) for value in data_sample.values()] for data_sample in data_collection]

After writing this out I'm thinking it might be wiser not to use list comprehensions at all for this case.

Upvotes: 1

Views: 37

Answers (1)

Netwave
Netwave

Reputation: 42756

This comprehension will do:

results = [
    (d["query_result"]["IDSubtitleFile"], d["movie directory"]) 
    for d in data_collection
]

Result:

>>> pprint([(d["query_result"]["IDSubtitleFile"], d["movie directory"]) for d in data_collection])
[('1952985556',
  'C:\\...\\Movies\\12 Angry Men 1957 1080p BluRay x264 AAC - Ozlem'),
 ('1952985556',
  'C:\\...\\Movies\\12 Angry Men 1957 1080p BluRay x264 AAC - Ozlem'),
 ('1952985556',
  'C:\\...\\Movies\\12 Angry Men 1957 1080p BluRay x264 AAC - Ozlem'),
 ('1952985556',
  'C:\\...\\Movies\\12 Angry Men 1957 1080p BluRay x264 AAC - Ozlem'),
 ('1952985556',
  'C:\\...\\Movies\\12 Angry Men 1957 1080p BluRay x264 AAC - Ozlem'),
 ('1952985556',
  'C:\\...\\Movies\\12 Angry Men 1957 1080p BluRay x264 AAC - Ozlem'),
 ('1952985556',
  'C:\\...\\Movies\\12 Angry Men 1957 1080p BluRay x264 AAC - Ozlem'),
 ('1952985556',
  'C:\\...\\Movies\\12 Angry Men 1957 1080p BluRay x264 AAC - Ozlem'),
 ('1952985556',
  'C:\\...\\Movies\\12 Angry Men 1957 1080p BluRay x264 AAC - Ozlem'),
 ('1952985556',
  'C:\\...\\Movies\\12 Angry Men 1957 1080p BluRay x264 AAC - Ozlem')]

Upvotes: 2

Related Questions