Как создать кортеж определенных значений в словаре понимания? - PullRequest
1 голос
/ 02 мая 2019

У меня есть много словарей, которые выглядят так:

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'}

В основном:

data_collection = [data_sample] * 10

Мой желаемый вывод - это кортеж, который состоит из:

(query_result["IDSubtitleFile"], movie_directory)

Как бы я мог создать желаемый результат, используя понимание списка? Я знаю, как бы это сделать, используя для циклов, но я изо всех сил пытаюсь управлять этим, используя понимание списка. Единственная идея, которая у меня есть, это то, что она выдает ошибку и на самом деле не имеет никакого смысла:

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

После написания этого я думаю, что было бы разумнее вообще не использовать списочные выражения для этого случая.

1 Ответ

2 голосов
/ 02 мая 2019

Это понимание подойдет:

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

Результат:

>>> 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')]
...