Учет списка для извлечения списка кортежей из словаря

Я хотел бы использовать понимание списка в следующем списке;

movie_dicts = [{'title':'A Boy and His Dog', 'year':1975, 'rating':6.6}, {'title':'Ran', 'year':1985, 'rating': 8.3}, {'title':'True Grit', 'year':2010, 'rating':8.0}, {'title':'Scanners', 'year':1981, 'rating': 6.7}] 

используя мои знания в понимании списка и словарях, я знаю, что

 movie_titles = [x['title'] for x in movie_dicts] print movie_titles 

напечатает список с названиями фильмов.

Чтобы извлечь список (заголовок, год) кортежей, я пробовал –

 movie_tuples = [x for ('title','year') in movie_dicts] print movie_tuples 

и я получаю сообщение об ошибке SyntaxError: не может назначить литерал

Я не уверен, как получить две (конкретные) пары ключ / значение, используя понимание списка (при этом автоматически генерируется кортеж)?

4 Solutions collect form web for “Учет списка для извлечения списка кортежей из словаря”

 movie_dicts = [ {'title':'A Boy and His Dog', 'year':1975, 'rating':6.6}, {'title':'Ran', 'year':1985, 'rating': 8.3}, {'title':'True Grit', 'year':2010, 'rating':8.0}, {'title':'Scanners', 'year':1981, 'rating': 6.7} ] title_year = [(i['title'],i['year']) for i in movie_dicts] 

дает

 [('A Boy and His Dog', 1975), ('Ran', 1985), ('True Grit', 2010), ('Scanners', 1981)] 

ИЛИ

 import operator fields = operator.itemgetter('title','year') title_year = [fields(i) for i in movie_dicts] 

который дает точно такой же результат.

Эта версия имеет как минимум повторение:

 >>> fields = "title year".split() >>> movie_tuples = [tuple(map(d.get,fields)) for d in movie_dicts] 
 [(movie_dict['title'], movie_dict['year']) for movie_dict in movie_dicts] 

Помните, что xs = [expr for target in expr2] эквивалентен (почти – игнорирование StopIteration для простоты):

 xs = [] for target in expr2: xs.append(expr) 

Таким образом, target должна быть простым старым именем переменной или некоторым кортежем для распаковки. Но так как movie_dicts не содержит последовательностей для распаковки, но простых одиночных значений (dicts), вы должны ограничить их одной переменной. Затем, когда вы добавляете к сгенерированному списку, вы можете создать кортеж и делать все, что хотите, с текущим элементом.

Если вам не нужно использовать понимание списка, вы всегда можете:

 list(d.iteritems()) 
  • Convert For Loop to List Consrehension: тестирование, если элементы из списка 2 являются частичным совпадением для элементов в списке 1
  • Что такое «гомогенность» в документации по списку Python?
  • Pythonic способ определить, являются ли не нулевые записи списка «непрерывными»,
  • Как понять списки выражений в Python
  • Есть ли способ использовать два условия if в списках в python
  • Преобразование среднего значения значений списка Python в другой список
  • Учет списка, проверьте, уникален ли элемент
  • Добавить запись в список и удалить первый в Python
  • Pythonic способ проверить, выполняется ли условие для любого элемента списка
  • Как найти все вхождения элемента в списке?
  • Выполнение математики в списке в python
  • Python - лучший язык программирования в мире.