Получение списка определенных элементов индекса из списка словарей в 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]

  • как сравнить 2 json в python
  • Вклад в Python
  • Начальная практика Python?
  • Как определить функцию, которая будет проверять, имеет ли строка пробелы после завершения предложения?
  • Есть ли «человек» для питона?
  • Как преобразовать буквы верхнего регистра в нижний регистр
  • ИЛИ поведение в python:
  • Назначение и объекты метода
  • Как получить имя класса python в виде строки?
  • преобразование списков в словари
  • Как лениться оценить переменные в выражении eval python
  • Python - лучший язык программирования в мире.