Получение списка определенных элементов индекса из списка словарей в python (понимание списка)

У меня есть список таких словарей:

listDict = [{'id':1,'other':2},{'id':3,'other':4},{'id':5,'other':6}] 

Мне нужен список всех идентификаторов из словарей. Итак, из данного списка я бы получил список:

 [1,3,5] 

Это должна быть одна строка. Я знаю, что делал это раньше, я просто забыл синтаксис … Спасибо

5 Solutions collect form web for “Получение списка определенных элементов индекса из списка словарей в python (понимание списка)”

 >>> listDict = [{'id':1,'other':2},{'id':3,'other':4},{'id':5,'other':6}] >>> [item["id"] for item in listDict] [1, 3, 5] 
 [i['id'] for i in listDict] 

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

Используя пакет pandas, просто ссылайтесь на клавиши как на заголовки столбцов, так и на группы, используя один и тот же ключ:

 import pandas as pd listDict = [{'id':1,'other':2},{'id':3,'other':4},{'id':5,'other':6}] df = pd.DataFrame(listDict) # Then just reference the 'id' column to get a numpy array of it df['id'] # or just get a list df['id'].tolist() 

Некоторые бенчмаркинга ниже, панды явно превосходят крупные данные. Маленький случай использует данные 3 записи, большой случай имеет 150k записей:

 setup_large = "listDict = [];\ [listDict.extend(({'id':1,'other':2},{'id':3,'other':4},\ {'id':5,'other':6})) for _ in range(50000)];\ from operator import itemgetter;import pandas as pd;\ df = pd.DataFrame(listDict);" setup_small = "listDict = [];\ listDict.extend(({'id':1,'other':2},{'id':3,'other':4},{'id':5,'other':6}));\ from operator import itemgetter;import pandas as pd;\ df = pd.DataFrame(listDict);" method1 = '[item["id"] for item in listDict]' method2 = "df['id'].tolist()" import timeit t = timeit.Timer(method1, setup_small) print('Small Method LC: ' + str(t.timeit(100))) t = timeit.Timer(method2, setup_small) print('Small Method Pandas: ' + str(t.timeit(100))) t = timeit.Timer(method1, setup_large) print('Large Method LC: ' + str(t.timeit(100))) t = timeit.Timer(method2, setup_large) print('Large Method Pandas: ' + str(t.timeit(100))) #Small Method LC: 8.79764556885e-05 #Small Method Pandas: 0.00153517723083 #Large Method LC: 2.34853601456 #Large Method Pandas: 0.605192184448 

Для python geeks:

 import operator map(operator.itemgetter('id'), listDict) 

[elem ['id'] для elem в спискеDict]

Interesting Posts

PyQt lineEdit пуст при вызове из другого скрипта

Будет ли литерал Python dict быть оценен в том порядке, в котором он написан?

Python PIP Install throws TypeError: неподдерживаемый тип операндов для – =: 'Retry' и 'int'

Пример клиента python для FreeOPCUA

фоновый фон прокрутки (python) – не работает 100%

Пересечение двух словарей в Python

как рассчитать оператор if для балансировки относительной стоимости / Ошибка: «Значение истинности серии неоднозначно»

Функция, внутренне использующая exec (astring) с определением переменной внутри astring, не может вернуть переменную в python 3

Алгоритм определения набора соединений

Как вывести список с разделителями-запятыми в jinja python template?

Python: создание двумерной гистограммы из матрицы numpy

Python 3 неблокирует чтение с pySerial (не может получить свойство «in_waiting» pySerial для работы)

Ошибки в терминале при развертывании на героку

Python Заменить \\ с \

Учебное пособие по запуску scrapy: ошибка при выполнении этой команды

Python - лучший язык программирования в мире.