2013-09-18 7 views
2

Извините, если повторный вопрос, новый для программирования не нашел подходящего ответа. Я пытаюсь преобразовать список в словарь. ключ x [1] и значения как x [2]Преобразование списка в словарь, с ключом и значением из списка

Просто, чтобы быть чистым Я имею массив n * 3 и должен преобразовать его в словарь со вторым столбцом в качестве ключей и третьим столбцом в качестве значений.

Я пробовал:

for entry in data: 
    keys=entry[1] 
    values=entry[2] 

source = dict.fromkeys(keys, values) 

получил ошибку «список типов не hashable»

Перебрал вопрос 4576115. Однако, мне нужно перебирать каждый элемент 3000+ * 3 массива с большинством элементов сами являющиеся списком и после этого устанавливая второй элемент каждой записи в качестве ключа, а третий - как значение. только для усиления, также попытался

b = {data[i][1]: data[i][2] for i in range(0, len(data))} 

и для записи в данных: 'список'

keys=entry[1] 
values=entry[2] 
b.update(keys,values) 

и

keyList.append(keys) 
valueList.append(values) 
b = dict(zip(keyList,valueList)) 

и

b={entry[1]:entry[2] for entry in data} 

же проблемный ошибка не hashable

OK извините. Понял. Проблема в том, что сами ключи являются списками. Я смотрел на массив и пропустил элемент

+0

Вы имеете в виду, что у вас длинный список, где каждые два индекса является ключом: пара значений? [k1, v1, k2, v2, k3, v3, ...] – gregb212

+0

Кто голосует за открытие? Это явный дубликат. – Marcin

+1

Это не дубликат вопроса 4576115. – RichieHindle

ответ

7

Не совсем понял, но разве это не то, что вы хотите?

>>> a = [[1,2,3],[2,3,4],[4,5,6]] 
>>> b = {x[1]:x[2] for x in a} 
>>> b 
{2: 3, 3: 4, 5: 6} 
>>> 
+0

Назначение последовательности обычно предпочтительнее. – Marcin

+0

, которые формируют код, выполняются быстрее: http://pythonfasterway.uni.me/#test24 – Zokis

+0

Помимо того, что этот сайт является отвратительно непригодным, вы сравниваете яблоки с апельсинами. Попробуйте фактически сравнить похожие вещи: '{x [1]: x [2] для x в a}' to '{k: v для x, k, v в a}' – Marcin

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