2014-11-25 8 views
-2

Я довольно новичок в Python. У меня есть список словарей.Значения Python dict в список целых чисел

[{"x": "23"}, {"x": "14"}, {"x": "9"}, {"x": "19"}, {"x": "21"}, {"x": "14"}, {"x": "16"}, {"x": "11"}, {"x": "9"}, {"x": "6"}, {"x": "24"}, {"x": "13"}] 

Я хочу, чтобы извлечь значения, связанные с ключом x и построить их. Для этого список должен выглядеть так, и значения должны быть целыми (или плавать).

[23, 14, 9, 19, 21, 14, 16, 11, 9, 6, 24, 13] 

Мой вопрос: как я

  1. экстракт эти значения, и
  2. преобразовать их в целые числа?

ответ

1

Это можно сделать, используя понимание списка, используя метод словаря get.

>>> l = [{"x": "23"}, {"x": "14"}, {"x": "9"}, {"x": "19"}, {"x": "21"}, {"x": "14"}, {"x": "16"}, {"x": "11"}, {"x": "9"}, {"x": "6"}, {"x": "24"}, {"x": "13"}] 
>>> [i.get('x') for i in l] 
['23', '14', '9', '19', '21', '14', '16', '11', '9', '6', '24', '13'] 

Если вы хотите их как целые числа, преобразовывать их в списке понимание

>>> [int(i.get('x')) for i in l] 
[23, 14, 9, 19, 21, 14, 16, 11, 9, 6, 24, 13] 
+0

Почему не 'я [ 'х'] 'вместо' get'? – RemcoGerlich

+1

@RemcoGerlich В этом случае, который будет работать очень хорошо. Обычно я придерживаюсь '.get' для защиты от' KeyError' и просто обрабатываю отсутствующие ключи отдельно. – CoryKramer

+0

Но тогда вам нужно обращаться с возвратом 'None', иначе вы просто измените исключение, которое вы получаете. – RemcoGerlich

1

используйте устройство list comprehension. Для каждого элемента получить "x" и приведение к int:

[int(item['x']) for item in mylist] 

Если вам нужно изменить поплавки int к float.

1

Вы можете использовать list comprehension

>>> mylist = [{'x': '23'}, {'x': '14'}, {'x': '9'}, {'x': '19'}, {'x': '21'}, {'x': '14'}, {'x': '16'}, {'x': '11'}, {'x': '9'}, {'x': '6'}, {'x': '24'}, {'x': '13'}] 
>>> [ int(item.values()[0]) for item in mylist] 
[23, 14, 9, 19, 21, 14, 16, 11, 9, 6, 24, 13] 

или map

>>> map(lambda x: int(x['x']), mylist) 
[23, 14, 9, 19, 21, 14, 16, 11, 9, 6, 24, 13] 
+0

Проблема решена! Спасибо всем за отличные ответы. – user2896287

Смежные вопросы