Взгляните на list comprehensions
Может попробовать:
names = [x['name'] for x in fields]
Пример:
>>> fields = [{'name':'count', 'label':'Count'},{'name':'type', 'label':'Type'}]
>>> [x['name'] for x in fields]
['count', 'type']
Если names
уже существует Вы можете map (создавая его в том же порядке), чтобы добавить каждый элемент нового списка вы создали:
map(names.append, [x['name'] for x in fields])
Пример :
>>> a = [1, 2 ,3]
>>> map(a.append, [2 ,3, 4])
[None, None, None]
>>> a
[1, 2, 3, 2, 3, 4]
Редактировать:
Не знаю, почему я не упомянул list.extend
, но вот пример:
names.extend([x['name'] for x in fields])
или просто использовать +
оператор:
names += [x['name'] for x in fields]
вы можете также фильтровать " на лету ", используя заявление if
, как и следовало ожидать:
names = [x['name'] for x in fields if x and x['name'][0] == 'a']
Пример:
>>> l1 = ({'a':None}, None, {'a': 'aasd'})
>>> [x['a'] for x in l1 if (x and x['a'] and x['a'][0] == 'a')]
['aasd']
, который будет генерировать список всех хз с именами, которые начинаются с «а»
это не добавляет к 'names' –
Создает необходимый список. Я предлагаю такое же решение. –
@BleedingFingers 'names = [f ['name'] для f в полях]' – Hyperboreus