2016-07-11 2 views
-5

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

a = [0,1,2,5] 

Я хочу, чтобы получить что-то подобное:

output = [{'i':0,'v':0},{'i':1,'v':0},{'i':2,'v':0},{'i':5,'v':0}] 

с одной строки кода/выражения, где:

output[indx]['i'] = a[indx] 

и:

output[indx]['v'] = 0 
+1

Можете ли вы показать, что вы пробовали до сих пор? – Will

+1

Пожалуйста, не принимайте бессмысленные изменения - обратите внимание, что [два рецензента правильно отклонили его] (http://stackoverflow.com/review/spected-edits/12967219). – jonrsharpe

ответ

2

Используйте list comprehension для получения списка вывода:

[{'i': i, 'v': 0} for i in a] 

Это создает список с тем же числом элементов, как a имеет, каждый hthe 'i' значение словаря остроумия набора к элементу из a:

>>> a = [0, 1, 2, 5] 
>>> [{'i': i, 'v': 0} for i in a] 
[{'v': 0, 'i': 0}, {'v': 0, 'i': 1}, {'v': 0, 'i': 2}, {'v': 0, 'i': 5}] 
Смежные вопросы