2016-02-26 3 views
2

Есть ли способ создать словарь с вложенным списком, но для конкретных индексов?
У меня есть вход:Создание словаря из вложенного списка с использованием понимания словаря

data = [[int, int, int], [int, int, int], [int, int,int]] 

Я хочу так-то вдоль линий:

my_dictionary = {} 
    for x in data: 
     my_dictionary[x[0]] = [] 
     my_dictionary[x[1]] = [] 

, но без перебора всего этого.

Например:

data = [[a,b,c], [d,e,f], [g,h,i]] 
# would leave me with: 
my_dictionary = {a: [] , b:[], d:[], e:[], g:[], h:[] } 

Есть ли способ определить это с помощью словаря понимания?

+0

Каков ваш * конкретные показатели * и каков ваш ожидаемый результат? Можете ли вы добавить к своему вопросу [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve)? – Kasramvd

ответ

1

Просто сделай это:

>>> data 
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
>>> {d[i]:[] for i in (0,1) for d in data} 
{1: [], 2: [], 4: [], 5: [], 7: [], 8: []} 
0

Поскольку вы просто хотите первые два столбца, которые вы можете просто цикл над ними. Вы можете использовать вложенный список понимание для создания списка Flatten из первых двух колонков и использовать dict.fromkeys для создания словаря образует итерацию, указав общее значение и использовать collections.OrderedDict() для того, чтобы сохранить порядок:

>>> from collections import OrderedDict 
>>> my_dict = OrderedDict.fromkeys([i for sub in data for i in sub[:2]],[]) 
>>> my_dict 
OrderedDict([('a', []), ('b', []), ('d', []), ('e', []), ('g', []), ('h', [])]) 
>>> my_dict['a'] 
[] 
Смежные вопросы