Python Доступ к значениям в списке словарей

Скажем, у меня есть список словарей с именами и возрастом и другой информацией, например:

thisismylist= [ {'Name': 'Albert' , 'Age': 16}, {'Name': 'Suzy', 'Age': 17}, {'Name': 'Johnny', 'Age': 13} ] 

Как я могу напечатать следующее, используя цикл for:

 Albert Suzy Johnny 

Я просто не могу обмануть эту идею …

5 Solutions collect form web for “Python Доступ к значениям в списке словарей”

Если вы просто ищете значения, связанные с «Name», ваш код должен выглядеть так:

 for d in thisismylist: print d['Name'] 

Похоже, вам нужно пройти документацию по управлению потоком Python . В принципе, вы просто перебираете все элементы в своем списке, а затем для каждого из этих элементов (в этом случае словари) вы можете получить доступ к любым значениям, которые вы хотите. Например, приведенный ниже код выведет каждое значение в каждом словаре внутри списка.

 for d in my_list: for key in d: print d[key] 

Обратите внимание, что это не печатает ключи, а только значения. Чтобы распечатать ключи, сделайте свой print key, d[key] . Это просто!

Но на самом деле, прочитайте документацию по контролю потока; это очень здорово.

Если вам нужен список этих значений:

 >>> [d['Name'] for d in thisismylist] ['Albert', 'Suzy', 'Johnny'] 

Тот же метод, вы можете получить кортеж данных:

 >>> [(d['Name'],d['Age']) for d in thisismylist] [('Albert', 16), ('Suzy', 17), ('Johnny', 13)] 

Или, переверните список dicts в один ключ, словарь пары значений:

 >>> {d['Name']:d['Age'] for d in thisismylist} {'Johnny': 13, 'Albert': 16, 'Suzy': 17} 

Итак, тот же метод, способ их печати:

 >>> print '\n'.join(d['Name'] for d in thisismylist) Albert Suzy Johnny 

И вы можете распечатать его отсортированным, если хотите:

 >>> print '\n'.join(sorted(d['Name'] for d in thisismylist)) Albert Johnny Suzy 

Или сортируйте их по возрасту, сглаживая список:

 >>> for name, age in sorted([(d['Name'],d['Age']) for d in thisismylist],key=lambda t:t[1]): ... print '{}: {}'.format(name,age) ... Johnny: 13 Albert: 16 Suzy: 17 

Вы можете проецировать атрибут Name из каждого элемента в списке и присоединяться к результатам с символами новой строки:

 >>> print '\n'.join(x['Name'] for x in thisismylist) Albert Suzy Johnny 

редактировать

Мне потребовалось несколько минут, но я вспомнил другой интересный способ сделать это. Для этого вы можете использовать комбинацию itertools и operator модуля. Вы тоже можете увидеть его на repl.it.

 >>> from itertools import imap >>> from operator import itemgetter >>> print '\n'.join(imap(itemgetter('Name'), thisismylist)) Albert Suzy Johnny 

В любом случае вам, вероятно, лучше использовать ваниль for цикла, но я решил, что некоторые другие варианты были в порядке.

Сокращенный способ сделать это без импорта библиотек:

 print('\n'.join([e["Name"] for e in thisismylist])) 
  • Python List Consrehension Vs. карта
  • Создание словаря со списком списков в Python
  • Как установить SciPy на 64-битную Windows?
  • Python: разделение списка на под-списки на основе диапазонов индексов
  • Python словарь и список: как его преобразовать?
  • Нарезка списков Python с произвольными индексами
  • Эффективность индексирования списка Python
  • Создание списка с> 255 элементами
  • Python - лучший язык программирования в мире.